然后执行b=func(c,&a); a=9,c=6,b=16,
这一步的a=9,c=6,b=16是怎么得来的?
我怎么是c=6,a=4(因为a=*p=2+2),b=8 ?
这一步的a=9,c=6,b=16是怎么得来的?
我怎么是c=6,a=4(因为a=*p=2+2),b=8 ?
#include <stdio.h>
int func(int a,int *p);
void main()
{
int a=1,b=2,c;
c=func(a,&b); printf("a=%d,b=%d,c=%d\n",a,b,c);
b=func(c,&a);printf("a=%d,b=%d,c=%d\n",a,b,c);
a=func(b,&c);printf("a=%d,b=%d,c=%d\n",a,b,c);
}
int func(int a,int *p)
{
a++;
*p=a+2;
return(*p+a);
}
为什么我这样加了红色的语句
运行结果却是:
a=6,b=1,c=4
a=16,b=9,c=16
a=36,b=16,c=19
请高手指点!
因为第一步执行完了后a=2;b=4;c=6;
然后调用b=func(c,&a);时具体如下:
c++==7;
*p=c+2-->*p=9;-->a=9;(*p==*&a==a=9;)
*p+c==16;
友情提示:自己多想想 自己想出来的,理解得最深,记得也最牢!
因为第一步执行完了后a=2;b=4;c=6;
然后调用b=func(c,&a);时具体如下:
c++==7;
*p=c+2-->*p=9;-->a=9;(*p==*&a==a=9;)
*p+c==16;
友情提示:自己多想想 自己想出来的,理解得最深,记得也最牢!
终于明白了。原来是那个tc不行,我下了一个C-FREE,正确结果应该是
a=1,b=4,c=6
a=9,b=16,c=6
a=36,b=16,c=19
我说我怎么想不明白了呢