C语言中一个简单的问题,不太理解?
structtt{intx;structtt*y;}*p;structtta[4]={20,a+1,15,a+2,30,a+3,17,a};main(){inti;p=a...
struct tt {int x;struct tt *y;} *p;
struct tt a[4] = {20,a+1,15,a+2,30,a+3,17,a};
main()
{
int i;
p = a;
for(i = 1;i<=2; i++)
{printf("%d",p->x);}
p = p->y;
}想问的是,因为p = a,那么这个p->x就是指向a的首地址,就打印出20了,
然后这个p=p->y;意思是?里面的a+1又是什么意思?再循环一次打印出的15是怎么实现的? 展开
struct tt a[4] = {20,a+1,15,a+2,30,a+3,17,a};
main()
{
int i;
p = a;
for(i = 1;i<=2; i++)
{printf("%d",p->x);}
p = p->y;
}想问的是,因为p = a,那么这个p->x就是指向a的首地址,就打印出20了,
然后这个p=p->y;意思是?里面的a+1又是什么意思?再循环一次打印出的15是怎么实现的? 展开
展开全部
首先,for循环要包括p=p->y;下面的分析才成立(可能是书写错误,代码中没包括)。
以下是分析:
a是一个结构体数组, 有4个元素。
第1个元素是{20,a+1},表示第1个元素的x=20,y=a+1;(而y=a+1;表示第1个元素的y指向数组a的第2个元素)。后面的都是一样,前一个元素的y指向后一个元素。而最后一个元素是{17,a},表示最后一个元素的y又指向了第一个元素(可以认为最后一个元素的下一个元素是第一个元素)。这样,这4个元素就形成了一个环。
再说for循环,p开始是指向第1个元素的,所以就打印20了,而p=p->y;表示将p当前指向的元素的y赋给p,因为y都是指向下一个元素的,所以,p=p->y;后,p就指向了下一个元素,因此会依次输出下一个元素的x值。
以下是分析:
a是一个结构体数组, 有4个元素。
第1个元素是{20,a+1},表示第1个元素的x=20,y=a+1;(而y=a+1;表示第1个元素的y指向数组a的第2个元素)。后面的都是一样,前一个元素的y指向后一个元素。而最后一个元素是{17,a},表示最后一个元素的y又指向了第一个元素(可以认为最后一个元素的下一个元素是第一个元素)。这样,这4个元素就形成了一个环。
再说for循环,p开始是指向第1个元素的,所以就打印20了,而p=p->y;表示将p当前指向的元素的y赋给p,因为y都是指向下一个元素的,所以,p=p->y;后,p就指向了下一个元素,因此会依次输出下一个元素的x值。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询