struct st
{int n;struct st *next;
};
static struct st a[3]={1,&a[1],3,&a[2],5,&a[0]},*p;
假如下列语句显示的是4,则对指针p的赋值是()
printf(“%d”,++(p->next->n));
说清楚了是怎么弄的,刚开始学,不详细的话实在不懂。
{int n;struct st *next;
};
static struct st a[3]={1,&a[1],3,&a[2],5,&a[0]},*p;
假如下列语句显示的是4,则对指针p的赋值是()
printf(“%d”,++(p->next->n));
说清楚了是怎么弄的,刚开始学,不详细的话实在不懂。
解决方案
80
1.搞清楚前++和后++,这里是前++,所以先+1后参与计算,既然输出了4,那么说明p->next->n是3
2.搞清楚p->next代表什么,代表的是p所指节点的下一个节点(也就是说p的下一个结点的成员变量n的值是3)
然后来看static struct st a[3]={1,&a[1],3,&a[2],5,&a[0]}这句话(只有a[1]的值是3)
表示的是a[0]的next指针指向a[1],a[1]的next指针指向a[2],a[2]的next指针指向a[0],
所以很明显p = &a[0]
2.搞清楚p->next代表什么,代表的是p所指节点的下一个节点(也就是说p的下一个结点的成员变量n的值是3)
然后来看static struct st a[3]={1,&a[1],3,&a[2],5,&a[0]}这句话(只有a[1]的值是3)
表示的是a[0]的next指针指向a[1],a[1]的next指针指向a[2],a[2]的next指针指向a[0],
所以很明显p = &a[0]