一道C语言结构体题

来源:百度知道 编辑:UC知道 时间:2024/05/29 17:57:46
(40) 有以下程序
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
帮忙解释下整个运算过程,谢谢!

f1(A) ;f2(&B) ;关键是这两个调用,f1(A),实际值传递调用,就是这个函数不会改变传递进来的变量的值,f2函数是个指针函数,它的操作是把 {“SunDan”,2044};这个覆盖写入main中变量 b={“WangYin”,2043};

函数f1的形参为结构体变量,函数为值传递,故a的mum值不变,而f2传递的是指针变量,故b的木马为2044