有如下程序段#include "stdio.h"typedef struct aa{ int a; struct aa *next;} M;void set(M
有如下程序段#include "stdio.h"typedef struct aa{ int a; struct aa *next;} M;void set(M *k,int i,int *b){ int j,d=0; for(j=1;j<i;j++) { k[j-1].next=&k[j]; k[j-1].a=b[d++]; } k[j].a=b[d];}main(){ M k[5],*p; int d[5]={23,34,45,56,67}; set(k,5,d); p=k+1; printf("%d\n",________);}要输出45,则在下画线处应填入的选项是A.p->next->a B.++p->aC.(*p).a++ D.p++ ->a
正确答案:A在本题中,程序首先定义了一个结构体,结构体中有两个成员变量,一个是整型,另一个是指向该结构体的指针。然后程序定义了一无返回值的函数set,该函数带有三个参数,第一个是结构体指针变量k,第二个是整型变量i,第三个是整型指针变量b。在函数体中,首先定义了两个整型变量,然后执行for循环,从循环变量的初始值及循环结束条件我们可以知道,循环执行的次数与形参变量i有关,从循环体中我们可以看出,该循环是将结构体数组中的前一个结构体的指针成员指向后一个结构体的首地址,并用数组b中的值给结构体的成员变量a赋值。在主函数
词条内容仅供参考,如果您需要解决具体问题
(尤其在法律、医学等领域),建议您咨询相关领域专业人士。
