有以下程序 #include struct STU{ char name[9]; char sex; int score[2]; } ; void f( struct STU a[] ) { struct STU b = {"Zhao", ’m’, 85

admin2015-07-28  18

问题 有以下程序
#include
struct STU{ char name[9]; char sex; int score[2]; } ;
void f( struct STU a[] )
{ struct STU b = {"Zhao", ’m’, 85, 90};
a[1] = b;
}
main()
{ struct STU c[2]={ {"Qian", ’f’, 95, 92}, {"Sun", ’m’, 98, 99} };
f(c);
printf( "%s,%c,%d,%d,", c[0].name, c[0].sex, c[0].score[0], c[0].score[1] );
printf( "%s,%c,%d,%d\n", c[1].name, c[1].sex, c[1].score[0], c[1].score[1] );
}
程序运行后输出结果是( )。

选项 A、Qian,f,95,92,Zhao,m,85,90
B、Qian,f,95,92,Sun,m,98,99
C、Zhao,m,85,90,Sun,m,98,99
D、Zhao,m,85,90,Qian,f,95,92

答案A

解析 结构体数组名作为函数参数为地址传参,形参和实参指向的为同一块内存地址,所以对数组元素的改变能够影响到实参。同类型的结构体变量之间可以直接赋值,语句"a[1] = b;"则将结构体变量b中的数据赋值给数组a的第二个元素,所以输出结果为选项A)。
转载请注明原文地址:https://jikaoti.com/ti/hMn0FFFM
0

最新回复(0)