有以下程序 struct STU { char name[10]; int num; float TotalScore; }; vold f(struct STU *p) { s

admin2009-01-15  14

问题 有以下程序    struct  STU    {      char name[10];      int num;      float TotalScore;    };    vold  f(struct  STU  *p)    {      struct  STU  s[2]={{"SunDan",20044,550),{"Penghua".20045,537}},*q=s      ++p; ++q;  *p=*q;    }    main()    {      struct  SrU  s[3]={{"YangSan",20041,703),{"LiSiGuo",20042,580}};      f(s);      printf("%s  %d  %3.of\n",S[1].name,s[1].num,s[1].Totalscore);    }    程序运行后的输出结果是

选项 A、SunDan  20044  550
B、Penghua  20045  537
C、USiGuo  20042  580
D、SunDan  20041  703

答案2

解析 在主函数中,首先声明了一个结构体数组s[3],然后用数组名调用函数f,而数组名是数组首地址的指针,因此,传递给函数的是指向上函数中s[0]的指针。在函数中,将参数指针往后移动了一位++p;,所以该指针现在指向主函数中的s[1],函数中也声明?一个结构体数组s[2]和一个结构体指针q,q虽然初始化指向函数中的结构数组s[2]的首地址,但也被往后移动了一位,所以函数调用的结果是将函数中的s[1]赋给了主函数中的s[1],故最终输出为:Penghua  20045  537,应该选择B。
转载请注明原文地址:https://jikaoti.com/ti/6rK0FFFM
0

相关试题推荐
最新回复(0)