struct NODE {int k; struct NODE*link; }; main() {struct NODE m[5],*p=m,*q=m+4; int i=0; while(p!=q)

p->k=++i;p++;
q->k=i++;q--;

q->k=i;
for(i=0;i<5;i++)printf("%d",m[i].k);
printf("\n")
}

结果是13431
但是怎么运行的真的不知道 求详解

程序不全~! struct NODE {int k; struct NODE*link; }; main() {struct NODE m[5],*p=m,*q=m+4; int i=0; while(p!=q)
{p->k=++i;p++;
q->k=i++;q--;

q->k=i;
for(i=0;i<5;i++)printf("%d",m[i].k);
printf("\n")
}
应该是这样子滴!
*p=m[0],*q=m[4],i=0,这是初始状态。然后判断循环,p和q是否指向同一区域,不是。
所以m[0].k=++i=1;p指向m[1]。m[4].k=i++=1,i的值变为2,q指向m[3];再循环回去。
p,q不是指向同一区域。所以M[1]=++i=3;p指向m[2],m[3].k=i++=3;i变为4,q指向m[2];再循环
p和q指针相等了。所以退出循环,执行下面语句。q->k也就是m[2].k=4;
所以最后输出m[0]-m[4]为13431
温馨提示:内容为网友见解,仅供参考
无其他回答
相似回答