问题
单项选择题
有以下程序
#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。