有以下程序 struct STU{ char name[10]; int num; }; void f1(struct STU C) { struct STU b={"LiSiGuo",2042}; c=b;

admin2009-04-15  30

问题 有以下程序    struct STU{    char name[10];    int num;    };    void f1(struct STU C)    { struct STU b={"LiSiGuo",2042};      c=b;    }    void f2(struct STU*C)    { struct STU b={"SunDan",2044};    *c=b;        }    main()    { struct STU a={"YangSan",2041},b={"Wang Yin",2043};      f1(a) ;f2(&b) ;      printf("%d%d\n",a.num,b.num);    }    执行后输出结果是  

选项 A、2041 2044
B、2041 2043
C、2042 2044
D、2042 2043

答案1

解析 本题中首先定义了一个结构体类型STU,它由一个字符数组和一个整型变量num组成。然后定义两个函数f1和f2。其中f1是值传递的,f2是地址传递的。主函数中定义两个结构体变量a和b并分别赋初值,接着调用函数f1(a) ,由于函数f1是值传递,故执行该函数后并没有改变a的值,在接着调用函数f2(&b) ,由于该函数是地址传递,执行该函数后将使变量b的值为{“SunDan”,2044},故函数最后输出的a.num和b. num的值为2041和2044。
转载请注明原文地址:https://kaotiyun.com/show/RoWp777K
0

最新回复(0)