为什么输出结果为20412044

#include<stdio.h>
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;
}
int main()
{
struct STU a={"YangSan",2041},b={"WangYin",2043};
f1(a);f2(&b);
printf("%d%d",a.num,b.num);
return (0);
}

变量a只是把自己的值传给了f1函数,f1函数并未修改a的内容
f2传的是b的地址,在f2函数内,把b地址指向的内容换成了 2044的那个结构体,所以你再输出b,就是2044的内容了