有以下程序 #include <string.h> struct STU { char name[10]; int num; }; void f(char *name, int num) {

admin2009-01-15  22

问题 有以下程序    #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

答案1

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

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