#include<stdio.h>
int func(int *a, int p);
int b;
void main()
{
int a=2,c,b=3;
c=func(&a,b);
b=func(&c,a);
a=func(&b,c);
printf("a=%d,b=%d,c=%d",a,b,c);
}
int func(int *p,int a)
{
a++;
*p=a+b;
b++;
return(*p+a);
}
...全文
33411打赏收藏
为什么这个程序输出结果是a=16,b=9,c=7?求大神指点,代码如下
#include int func(int *a, int p); int b; void main() { int a=2,c,b=3; c=func(&a,b); b=func(&c,a); a=func(&b,c); printf("a=%d,b=%d,c=%d",a,b,c); } int func(int *p,int a) { a++; *p=a+b; b++; return(*p+a); }
先看第一个: c=func(&a,b);这条语句执行之后,a = 4(*p = 4 + 0); b = 1(全局),b = 3(局部), c = 8;
b = func(&c, a); 这条语句执行之后:a = 4, b = 2(全局), b = 11(局部), c = 6;
a=func(&b,c);这条语句执行之后: a = 16, b = 9, c = 6;