有下列程序  #include<stdio.h>  typedef struct stu{   char name[9];   char gender;   int score;  }STU;  void f(STU *a)  {  

admin2022-04-02  21

问题 有下列程序
 #include<stdio.h>
 typedef struct stu{
     char name[9];
     char gender;
     int score;
 }STU;
 void f(STU *a)
 {
   STU c={"Sun",’f’,90},*d=&c;
   *a=*d;
   printf("%s,%c,%d,",a->name,a->gender,a->score);
 }
 main()
 {  STU b={"Zhao",’m’,85},*a=&b;
    f(a);
    printf("%s,%c,%d",a->name,a->gender,a->score);
 }
 程序执行后的输出结果是(          )。

选项 A、Zhao,m,85,Zhao,m,85
B、Sun,f,90,Zhao,m,85
C、Zhao,m,85,Sun,f,90
D、Sun,f,90,Sun,f,90

答案D

解析 程序定义结构体类型STU,main函数定义结构体STU变量b,并将b的地址赋给指针变量a。调用函数f,传入a。在函数f中,定义了STU变量c,并将c的地址赋给d,再用d指向的值赋给a指向的地址,接着输出a指向的值,也就是c的值:Sun,f,90;由于函数f的调用通过指针参数a修改了变量b的值,所以a指向的值也就是b的值等价于c:Sun,f,90。本题答案为D选项。
转载请注明原文地址:https://kaotiyun.com/show/1hkp777K
0

最新回复(0)