萤火虫之森在线观看:谁能帮我解释下啊?C的

来源:百度文库 编辑:高考问答 时间:2024/04/27 16:37:07
int a=5;
f1(int x, int *y)
{static int b=2;
*y=a+b+x;
a=*y+b;
b=2*b; }

main()
{int b=3;
a=1;
f1(a,&b);
printf("a=%d, b=%d\n",a,b);
f1(a,&b);
printf("a=%d, b=%d\n",a,b);
getch(); }
结果的a=6,b=4和a=20,b=16是怎么出来的啊?

首先,你定义了一个static变量,还是你调用f1是在主函数里面调用的!所以你定义的全局变量int a=5就等于没作用!起作用的是main里面的a=1;
所以
第一次调用f1:
*y=1+2+1=4;
a=*y+b=1+2+1+2=6
而你定义了一个int *y是个指针,返回给参数b
故a=6,b=4
第二次调用
a己变为6,而b变为4
故*y=6+4+6=16;
a=*y+b=6+4+6+4=20
所以a=20,b=16

注:b=2*b; }这里不用管它,在这里它没起作用
如果还不明白就找我:QQ 254172728