|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
struct st
{
int n;
struct st *next;
};
struct st a[3]={5, &a[1], 7, &a[2], 9, '\0' }, *p;
p=&a[0];
则以下输出值为6的是(D)。
A.printf("%d\n",p++->n);
B.printf("%d\n",p->n++);
C.printf("%d\n",(*p).n++);
D.printf("%d\n",++p->n);
求助 正确答案为什么是D
个人理解:结构体内部定义了*next 也没有说明next指向下一个st 所以没形成单链表
语句:struct st a[3]={5, &a[1], 7, &a[2], 9, '\0' }, *p; 中 a[1]=&a[1] 那么 a[1]中存放的应该是一个地址 也没赋值a[1]->n的操作
为什么指针指向这个地址时候 里面的内容是6呢 这个6是怎么来的
本帖最后由 4goodworld 于 2020-3-2 19:15 编辑
就像 printf("%d",n++) 和printf("%d",++n)
如果n=1的话,前者打印1,后者是2
原因就是前者是先返回n,然后n+1
而后者是先n+1,然后返回n+1的值,也就是2
所以D,就很好理解了
D.printf("%d\n",++p->n);
p->n=5
p->n+1=6
返回6
|
|