gpt4 book ai didi

c - 在 C 中通过引用传递不起作用

转载 作者:行者123 更新时间:2023-12-02 06:36:44 25 4
gpt4 key购买 nike

我无法按我期望的方式通过引用进行简单传递。关掉拳头,当我编译时,我收到以下警告:

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;
}

这里出了什么问题?

最佳答案

运算符优先级。增量运算符比取消引用运算符绑定(bind)得更紧密,因此您的代码在语义上等同于:

*(j++)  // invalid read BTW

当你想要的时候

(*j)++

另请注意,C 没有引用传递的概念;一切都是按值(value)传递的。您正在按值传递地址。间接 != 通过引用传递。

关于c - 在 C 中通过引用传递不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16598622/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com