gpt4 book ai didi

c - 按值传递-不按我想要的方式执行

转载 作者:行者123 更新时间:2023-11-30 18:17:30 26 4
gpt4 key购买 nike

我不明白C中传值的概念。这是我的函数:

void add(int x){
x = x+1;
}

当我调用该函数时:

int y=3; 

add(y);

但是当我编译时,我仍然得到3。有人告诉我它与传值有关,但我仍然不明白?谁能解释为什么?

最佳答案

按值传递创建参数的副本。函数中改变的就是这个副本

void add(int x){
x = x+1;
}

因此,您所做的更改是对副本进行的,而不是对 main 作用域中的变量(您希望看到更改)进行的。

如果您想通过将变量作为参数传递来更改函数内的变量,则不能按值传递。您可以将函数更改为通过指针传递,如下所示

void add(int* x){
*x = *x + 1;
}

并将整数的地址传递给这样的函数

int y=3;
add(&y);

main()

指针仍然按值传递,因此它是正在操作的指针的副本,但这并不重要,因为您没有更改指针本身,而是更改了它指向的变量的值。

关于c - 按值传递-不按我想要的方式执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31393493/

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