以下 scanf 函数调用语句中对结构体变量成员的不正确引用是?

struct pupil  
{char name[20]; 
int age; int sex;}pup[5],*p; p=pup;

A.scanf("%d",&(p->sex));  

B.scanf("%d",p->age);

C.scanf("%s",pup[0].name); 

D.scanf("%d",&pup[0].age)
选项都解释一下,我快要晕了!!

【A】取p指向结构单元的sex成员变量地址,写法正确,由于p是指针类型因此用->

【B】没有取地址,与A就差在这里,对于scanf输入整数来说,没有满足要求

【C】pup数组第1单元的name数组,由于输入的是字符串,给出数组名即数组起始地址,满足要求

【D】这个写法与A差不多,A中的括号并不是必须的,scanf能正确地识别要取哪个变量的地址

温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-12-26
答案选B。应该是&(p->age),取pup数组的第一个结构体元素的age成员的地址。本回答被提问者和网友采纳