我有这个非常简单的程序
int test(int asdf){
asdf = asdf + 1;
return 0;
}
int main ( int argc, char **argv ){
int a = 1;
test(a);
printf("a is %d\n", a);
}
我希望程序输出2,但输出1.出了什么问题?我应该如何传递参考资料?
答案 0 :(得分:1)
无论你传递的是什么都会被复制......所以你应该传递一些东西,即使在复制时也可以找到原始的a
。
该东西是指针,其值是a
的地址。
如果你在一张纸上写下你朋友的地址,那么无论该纸被复制多少次,持有它的人仍然可以找到原来的房子。
您将指针编写为int* asdf
,a
的地址写为&a
。要在有指针时找到对象,需要*asdf
。
答案 1 :(得分:1)
首先从优秀的C书开始使用指针章节
int test(int* asdf){ // Argument will be pointer to integer
*asdf = *asdf + 1; // de-reference and access asdf's content & increment
return 0;
}
test(&a); // Pass address of a
答案 2 :(得分:0)