我不明白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/