我无法通过引用获得简单的传递,以我期望的方式工作。拳头关闭,当我编译时,我得到以下警告:
warning: value computed is not used [-Wunused-value]
其次,我希望在节目结束时打印2,而不是1。
$ ./testAdd
1
以下是简单的代码:
#include <stdio.h>
void addone(int *j) {
*j++;
}
int main(int argc, char *argv[])
{
int i = 1;
addone(&i);
printf("%d\n", i);
return 0;
}
这里出了什么问题?
答案 0 :(得分:9)
运营商优先权。增量运算符比解引用运算符绑定得更紧密,因此您的代码在语义上等同于:
*(j++) // invalid read BTW
何时需要
(*j)++
另请注意,C没有通过引用传递的概念;一切都是通过价值。您按值传递地址。间接!=通过引用传递。