A-A+
有以下程序 #include <stdlib.h> gtruet NODE { int nu
问题详情
有以下程序
#include <stdlib.h>
gtruet NODE
{ int num; struct NODE *next; };
main()
{
struct NODE *p,*q,*r;
p=(struct NODE*)malloc(sizeof (struct NODE));
q=(struct NODE*)malloc(sizeof (struct NODE));
r=(struct NODE*)malloc(sizeef (struct NODE));
p->num=10; q->num=20; r->num=30;
p->next=q; q->next-r;
printf("%dn",p->num+q->next->num);
}
程序运行后的输出结果是
A.10
B.20
C.30
D.50请帮忙给出正确答案和分析,谢谢!
参考答案
正确答案:D
解析:本题考查的知识点是对结构体指针变量的正确引用与计算。主函数中首先定义了三个结构体指针变量p,q,r。然后调用内存分配函数分别为其分配地址空间,程序中变量q->num的值为20,指针变量q->next指向指针变量r,r->nnm的值为30,所以变量q->next->nm的值为30,因此,表达式q->num+q->next->num的值为20+30=50.所以4个选项中D正确。