#include <stdio.h>
#include <stdlib.h>
void func(int *newvar);
int main(int argc, char *argv[])
{
int *var;
func(var);
system("pause");
return 0;
}
void func(int *newvar)
{
int *tmp = malloc(sizeof(int));
newvar = tmp;
}
函数退出后,指针" var"的值不会更改。我的代码中有什么问题?
函数退出后,指针'var'的值没有更改?如果要更改VAR,请通过var
的address
,在func()
中使用double pointer
AS
int main(int argc, char *argv[]) {
int *var;
printf("before in %s : %pn",__func__,var);
func(&var); /* pass the address of var */
printf("after in %s : %pn",__func__,var);
//system("pause");
return 0;
}
void func(int **newvar) {
int *tmp = malloc(sizeof(*newvar));
*newvar = tmp; /* it will change the var in calling function */
printf(" in %s : %pn",__func__,*newvar);
}
您必须将var的内存位置传递给func
func(&var);