C-如何将内存分配给传递给功能的指针


#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,请通过varaddress,在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);

相关内容

  • 没有找到相关文章

最新更新