C传递(双)指针作为malloc的参考/参数

时间:2015-11-11 01:55:12

标签: c pointers malloc parameter-passing double-pointer

我想通过参数传递变量,然后使用malloc为该参数分配一个内存区域。实际上,我知道该怎么做,但我想知道why这个功能不能像我预期的那样工作:

void temp1(int *a) {
    int *b = (int*) malloc(sizeof(int));
    a = b; // a receives the pointer from b, only while it's in temp1 function;
}

虽然这个功能有效:

void temp2(int **a) {
    int *b = (int*) malloc(sizeof(int));
    *a = b;
}

从main调用此方式时:

int main()
    int *t1 = NULL;
    temp1(t1); // but after exiting the temp1 function the t1 value is still NULL

    int *t2;
    temp2(&t2); // this works 

    return 0;
}

那么,我在函数temp1中缺少什么来避免它工作?是因为在功能temp1中我试图更改参数int *a的内容吗?我的意思是,当我在a = b; temp1 a t1aggregate(a[-c(ncol(a))], by=list(Identifier = a$Identifier), FUN=mean) 只保留我要分配给aggregate(. ~ Identifier, data=a, FUN=mean) 的地址的副本?

0 个答案:

没有答案