新手,求助一个简答的C程序,麻烦大神帮忙解答下
struct ks{
int a;
int *b;
}s[4],*p;
void mian()
{
int n=1,i;
for(i=0;i<4;i++)
{
s[i].a=n;
s[i].b=&s[i].a;
n+=2;
}
p=&s[0];
p++;
printf("%d,%d\n",(++p)->a,(p++)->a);
}
答案为什么是5,3
我的理解:++p之后,p指向s[2]了,p++之后应该是(p++)->a的值还是指向s[2],但是接着p就指向s[3]了
可是为啥不是呢,求大神解答下 C --------------------编程问答-------------------- 你的程序我运行的结果是7,3呀,错误的原因就是下面这句话
printf("%d,%d\n",(++p)->a,(p++)->a);
++p和p++是不能写在同一行的, 这种写法在c中是没有定义的,假如你写成这样就没有问题了:
printf("%d\n",(++p)->a);--------------------编程问答-------------------- 我的编译器是gcc (GCC) 4.4.6 20110731 (Red Hat 4.4.6-3)
printf("%d\n",(p++)->a);
补充:.NET技术 , 其他语言