...main() { int i,a=1; for(i=0;i<10;i++) fun(a); printf("%d\n",a...
发布网友
发布时间:2024-10-24 00:02
我来回答
共3个回答
热心网友
时间:2024-11-10 04:40
因为void fun(int a) {}这里a是形式参数,只能传值,不能传地址。所以,调用这个函数时,是把调用他的变量的值,复制了一份,这份复制的值的变量,不影响调用他的语句中的变量值。
所以, fun(a);不管 fun(int a) {//这里是内部},fun函数内部如何变化, main()函数中的a的值,是不变的。
热心网友
时间:2024-11-10 04:43
void fun(int a) { ++a; }
main() { int i,a=1;
for(i=0;i<10;i++) fun(a);
printf("%d\n",a);
}
a=1; //变量a=1
i=0; //i=0
i<10成立,开始循环: 调用fun(1),
在fun中用参数变量a取值等于1,这个a是个局部临时变量,虽然也叫a但是不是主程序中定义的那个a,我们不妨给他改个名字aa,++aa; aa的值变为2,这个aa随着函数返回被舍弃。因此函数调用的结果对于主程序中没有影响任何变量。
i++; [i=1], i<10成立,继续循环:调用fun(1),没有任何影响,主程序中的变量a仍然等于1。
i++; [i=2], i<10成立,继续循环:调用fun(1)
...
i++; [i=9], i<10成立,继续循环:调用fun(1)
i++; [i=10], i<10不成立,结束循环
printf输出1换行
热心网友
时间:2024-11-10 04:40
void fun(int a) { ++a; }
这个函数对a的++不会影响main里的a,它只影响fun的参数,这个参数本身的修改不会改变main里那个a