哪位佬能帮我解释下这个为什么选B吗?

img

…刚学c语言,自定义函数不是对xyz进行赋值了吗,为什么主函数输出的xyz还是原来的值。

注意函数的定义,函数参数是传递对象,这里的知识点是函数拷贝传参,实际上调用函数时,传递的是拷贝的一份对象去处理,原对象没啥变化

你这里需要关注的几个知识点应该是,函数的按值传参(拷贝传参),按地址传参(其实传递的地址,原值会变),以及引用传参(别名,原值也变)

值参是不能修改外部传入变量值得,所以这个函数毫无意义

fun函数里面是局部变量无法改变全局变量,若想改变需要用int型返回,而题中是void型

就近输出

这个题,考你的是值传递 和 址传递
你这么理解,所有的变量,不管是在哪里定义的,都有内存空间,都各有各的地址,每个地址里面存放的就是它的值
例如 x = 10,假如x 的内存地址为0x1000,那么0x1000 里面存放了10
那,我问你,你现在是把10 给了函数 fun(),还是把地址&x 传递过去了?
值对吧,那人家函数func 里面改人家自己的变量,跟x 有关系吗?