为什么答案里面有zhao还有qian?

img

函数f返回一个STU类型(一个结构体)的变量,其内容为{"Zhao", 'm', 85, 90},因为这个函数只是在操作变量a,与变量c只是内容一样,地址不一样。该函数无论如何都会返回这个STU类型的变量。d=f(c)返回{"Zhao", 'm', 85, 90}内容的STU型变量。而变量c的内容是{"Qian", 'f', 95, 92}。所以为A。
ps:结构体是用户自定义的数据类型。而且这段程序就不会出现在实际开发中,充满误导性。在函数f中无需传入变量a,并且这个函数的返回值是个常量,永远是{"Zhao", 'm', 85, 90},所以在实际开发中,应设置全局变量b作为常量,将内容设为{"Zhao", 'm', 85, 90}。所以现在的很多考试题脱离了实际开发,这种题不仅没有意义,还会严重影响开发者的思想。

应该是c作为形参进去的,d接收了形参操作过后的结果,并不改变原来的c,如果是f(&c)的话那应该要选B了

结构体变量c只是作为形参的单向值传递,在函数之中被赋值的是一块新的内存a,而不是传递的结构体变量c的那一段内存,如果传递的是c的地址或者是引用传递就是一个双向传递,双向传递使用的是同一块内存,因此实现变量值的修改

c语言的函数按值传递参数,而且传入函数的只是参数的副本。所以c是以副本的形式传入了被调函数,主调函数中的c并未改变。被调函数中的c的副本在函数结束后就被销毁了,主调函数中输出的仍然是原来的值。