有下列程序: #include<stdio.h> typedef struct stu{ char name[9]; char gender; int score; }STU;

admin2022-10-25  28

问题 有下列程序:
     #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://jikaoti.com/ti/tGd0FFFM
0

最新回复(0)