【发布时间】:2012-09-09 01:29:51
【问题描述】:
下面的C sn-p:
[...]
void f1(void* a){
printf("f(a) address = %p \n",a);
a = (void*)(int*)malloc(sizeof(int));
printf("a address = %p \n",a);
*(int*)a = 3;
printf("data = %d\n",*(int*)a);
}
void f(void){
void* a1=NULL;
printf("a1 address = %p \n",a1);
f1(a1);
printf("a1 address = %p \n",a1);
printf("Data.a1 = %d\n",*(int*)a1);
}
[...]
结果
a1 address = (nil)
f(a) address = (nil)
a address = 0xb3f010
data = 3
a1 address = (nil)
Segmentation fault (core dumped)
a1为什么不在函数中保留已经分配给它的地址?
【问题讨论】:
-
查找“按值传递”。
-
因为你是按值传递的。
标签: c pointers arguments argument-passing void-pointers