答案是36 16 19怎么算出来的呢?

#include<stdio.h>
int func(int a,int *p);
void main()
{
int a=1,b=2,c;
c=func(a,&b);
b=func(c,&a);
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);
}

img

int func(int a, int *p)
a++;
*p=a+2;
return(*p+a);
}
第一个参数是传值进来的,所以第一参数改变不会引起外面的变量的变化
第二个参数是指针,所以给它赋值时外面对应的变量也会变
int a=1,b=2,c;
所以执行c=func(a,&b)后的值a=1 b=4 c=6
执行b=func(c,&a);后的值 c=6 a=9 b=16
执行a=func(b,&c);后b=16 c=19 a=36