函数增加C中变量的值
我用PHP编写了相同的代码,5的值增加了,但是 为什么C中的值不递增函数增加C中变量的值,c,C,我用PHP编写了相同的代码,5的值增加了,但是 为什么C中的值不递增 int foo(int x){ x++; } int main( ){ int y = 5; foo(y); printf("value of y = %d\n", y); } 在C语言中,传递参数是通过值而不是引用来完成的。也就是说,函数所使用的数字对于传递给的数字是唯一的,并且在内存中有自己的空间。要想避开这件事,你要做什么 int foo(int* x){ (*x)++; } in
int foo(int x){
x++;
}
int main( ){
int y = 5;
foo(y);
printf("value of y = %d\n", y);
}
在C语言中,传递参数是通过值而不是引用来完成的。也就是说,函数所使用的数字对于传递给的数字是唯一的,并且在内存中有自己的空间。要想避开这件事,你要做什么
int foo(int* x){
(*x)++;
}
int main( ){
int y = 5;
foo(&y);
printf("value of y = %d\n", y);
}
您应该通过引用将参数传递给函数
foo
int foo(int *x){
(*x)++;
}
int main( ){
int y = 5;
foo(&y);
printf("value of y = %d\n", y);
}
因为x,y是它们函数的局部变量。变量的范围位于函数的块内。因此,不能从块外部更改这些变量的值 解决方案: 要么将这些变量声明为全局变量
int y;
int foo(){
y++;
}
int main( ){
y = 5;
foo();
printf("value of y = %d\n", y);
}
或者使用引用,你可以这样做
int foo(int *x){
(*x)++;
}
int main( ){
int y = 5;
foo(&y);
printf("value of y = %d\n", y);
}
可能是在PHP中,它是直接通过引用传递的。但是C有不同的函数调用。 如果您想增加函数中的值,它应该反映在主函数中。有两种可能的方法: 一, 二,
如果有任何问题,请告诉我。如果您想避免使用指针,您也可以做如下操作
int addone(int n);
int main(void) {
int n=0;
printf("Before: %d\n", n);
n=addone(n);//assign the returned value from function to the variable 'n'
printf("After: %d\n", n);
return 0;
}
int addone(int n) {
n++;
return n;
}
CPC中没有引用。C的可能副本不是PHP。关于这一点,已经有很多问题了。不仅如此,您的代码还遇到了一个问题,即在我尝试的PHP:函数中没有返回任何内容。变量不递增,输出为
5
,与C相同。它确实起作用。应该有一个变量来存储foo函数的返回值,或者可以从print函数调用该函数,该函数直接显示递增的值。
void foo(int *x)
{
++(*x);//this function is pass-by-reference.
}
int addone(int n);
int main(void) {
int n=0;
printf("Before: %d\n", n);
n=addone(n);//assign the returned value from function to the variable 'n'
printf("After: %d\n", n);
return 0;
}
int addone(int n) {
n++;
return n;
}