有以下程序: #include <stdlib.h> struct NODE { int num; struct NODE *next; }; main() { struct NODE *p,*q,*r; p=(st

admin2010-01-10  15

问题 有以下程序:
   #include  <stdlib.h>
   struct NODE
   { int num; struct NODE  *next; };
   main()
   { struct NODE *p,*q,*r;
   p=(struct NODE*)malloc(sizeof(struct NODE));
   q=(struct NODE*)mallloc(sizeof(struct NODE));
   r=(struct NODE*)malloc(sizeof(struct NODE));
   p->num=10;q->num=20; r->num=30;
   p->next=q;q->next=r;
   printf("%d\n",p->num+q->next->num);
   }
   程序运行后的输出结果是(  )。

选项 A、10
B、20
C、30
D、40

答案8

解析 本题在主函数中首先定义了3个结构体指针变量p,q,r。然后调用内存分配函数分别为其分配地址空间,程序中变量p->num的值为10,指针变量q->next指向指针变量r,r->num的值为30,所以变量q->next->num的值为30,因此,表达式 p->num+q->next->num的值为10+30=40。所以4个选项中D正确。
转载请注明原文地址:https://kaotiyun.com/show/yQWp777K
0

最新回复(0)