我想通过参数传递变量,然后使用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
t1
时aggregate(a[-c(ncol(a))], by=list(Identifier = a$Identifier), FUN=mean)
只保留我要分配给aggregate(. ~ Identifier, data=a, FUN=mean)
的地址的副本?