关于C语言一道考试题不会解答

这道题是写出输出的内容 通过fun函数b,c的值都变化了 可以fun函数里明明有a++的计算 可是为什么输出的a的值还是0?还有一个问题是 为什么fun函数里面的计算可以影响到main函数里面变量的值 是因为这些变量作为了fun函数的参数嘛?

应该注意到fun函数所调用的三个参数(形参):
n1是直接调用;
n2是指针调用;
n3是数组调用。
下面用fun(a, &b, c) 来说明调用的实质:
直接调用是系统产生一个实参的副本,即把a的值0复制一份给n1,后面对n1的操作如赋值,都不会影响main函数中变量a的值,所以main函数中a的值仍然是0。
指针调用是把实参变量b的地址赋值给形参变量n2,所以对*n2的操作,会影响到实参b的值。
数组调用的本质也是指针调用,他把数组c的首元素的地址赋给n3,当然对n3的元素的操作也会影响c数组相应元素的变化。
有什么问题请留言。
温馨提示:内容为网友见解,仅供参考
无其他回答
相似回答