谁能告诉我这个答案是怎么来的有以下程序struc STU{
char name[10];
int num;
};void f1(struct STU c){struct STUb={“LiSiGuo”,2042}; c=b;}void f2(struct STU *c){struct STUb={“SunDan”,2044}; *c=b;}main( ){structSTU a={“YangSan”,2041},b={“WangYin”,2043}; f1(a);f2(&b); printf(“%d %d\\n”,a.num,b.num);}执行后的输出结果是(A)A)2041 2044 B)2041 2043 C)20422044D)20422043
很简单。void f2(struct STU *c)可以改变参数c的值,输入{“WangYin”,2043}被改成{“SunDan”,2044}void f1(struct STU c)不能改变参数c的值,输入{“YangSan”,2041},不变任何一本C语言书上都会有解释的。指针的基本用法
提问者对答案的评价:
这里是一个指针的调用机制问题,主函数main()里的f2(&b)就调用了外部函数:void f2(struct STU *c){ struct STU b={“SunDan”,2044};*c=b;}而*c=b就把b={“WangYin”,2043}换成了b={“SunDan”,2044}.而输出的printf(“%d %d\\n”,a.num,b.num);a,b为结构体定义的对象.a.num,b.num是指定输出对象里的数,所以输出的结果为2041 2044.就这样. |