struc STU{ char name[10]; int num; }; void f1(struct STU c) { struct STU b={"LiSiGuo",2042}; c=b; }struc 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",204

来源:学生作业帮助网 编辑:作业帮 时间:2024/05/13 07:48:55

struc STU{ char name[10]; int num; }; void f1(struct STU c) { struct STU b={"LiSiGuo",2042}; c=b; }
struc 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={"WangYin",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

答案为A,这个还是传值和传地址的题目.
要想改变原来实参的值就必须传地址,就是指针,或者是引用,所以只有f2能达到改变实参值的目的,f1 不能改变原来参数的值,