问题 单项选择题

有以下程序
#include <string.h>
struct STU

char name[10];
int num;
;
void f(char *name, int num)

struct STU s[2]="SunDan",20044,"Penghua",20045;
num=s[0].num;
strcpy(name,s[0].name);

main()

struct STU s[2]="YangSan",20041,"LiSiGuo",20042,*p;
p=&s[1];
f(p->name,p->num);
printf("%s %d\n",p->name,p->num);

程序运行后的输出结果是

A.SunDan 20042

B.SunDan 20044

C.LiSiGuo 20042

D.YangSan 20041

答案

参考答案:A

解析: 题目中定义的函数f()包含两个参数,一个字符指针,—个整型变量。当修改参数指针所指向的内容的时候,实参所指的内容也被修改,即传址调用;但只是修改参数变量的内容,则实奉不受影响, 即传值调用。因此,主函数调用f()函数后,第1个参数被修改成函数中s[0]的name成员,第2个参数不受影响,还是主函数中 s[1]的num成员。故最终输出SunDan 20042。应该选择A。

多项选择题
单项选择题