a.b=1,a.p=2
f(a): c.b+=1;[c.b=1+1=2],c.p+=2;[c.p=2+2=4]
printf输出:1, 2换行
原因是:由于f(a);的调用,a结构用于取出值来给f函数新开设的变量c赋初始值,
进入f函数后c.b=1,c.p=2,返回前c.b=2,c.p=4,返回后f函数开设的变量被舍弃,
输出a的值不会改变。如果想改变可以:
void f(A *c) { c->b+=1; c->p+=2; }
void main() { A a={1,2}; f(&a); printf("%d,%d\n",a.b,a.p); }