C语言,第八题,讲一下哈哈

如题所述

(1)这个题目是考察同学对函数调用细节是否真正理解。
(2)分析一下主函数main(),它定义了三个变量xyz并赋值为10,100和1000.。然后调用一个函数fun()。再调用时有三个参数,分别是xyz。最后打印xyz的值。
(3)再分析一下fun()函数,它有三个形参abc,在运行时,它对三个形参分别进行了赋值,最后又把a与b的值进行了对换。同时也应该注意到这个函数是一个无返回值的函数。
(4)要判断打印的内容,首先要确定xyz三个变量的值是多少。这涉及到c语言中函数调用的规则:当调用函数时,先建立形参的内存单元,再把实参的数字对应复制给它们。比如在这个题目中,当调用fun()函数时,先建立三个形参abc的三个内存单元(地址),再把实参xyx的值对应赋给它们,即abc三个内存地址中分别写入xyz的值(10,100,1000)。至此,进入了函数fun()内部运行,所有对形参abc的操作将只影响abc的值,而xyz三个变量是存放在与abc不同的地址中的,它们不爱任何影响。所以,后面的赋值、交换,都不会影响xyz的值。
故,运行完fun函数又回到主函数后,xyz的值仍然是10,100,1000未变,故打印的结果是:10,100,1000,是为C)选项。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2016-01-17
函数中的形式参数会开辟新的内存空间,a,b,c和x,y,z没有任何直接或者间接的关系,所以该是多少还是多少本回答被网友采纳
第2个回答  2016-01-17
fun函数为void类型无返回值所有还是原来顺序
第3个回答  2016-01-17
值传递不改变
第4个回答  2016-01-17
看看主函数,然后再看输出什么就行了