谁能告诉我这个答案是怎么出来的??

[复制链接]
查看11 | 回复0 | 2009-1-30 06:28:38 | 显示全部楼层 |阅读模式
谁能告诉我这个答案是怎么来的有以下程序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.就这样.
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行