早教吧 育儿知识 作业答案 考试题库 百科 知识分享

问一道关于C程结构指针的题~麻烦计算机大神们帮个忙啊~假定有如下定义,structst{charname[10];intscore;}a[3],*p=a;请问哪个用法是正确的?A.p->name="Tom";B.*p,name[0]='B';c.(*p)->name[0]='C';D.*(*p).name='D'好像

题目详情
问一道关于C程结构指针的题~麻烦计算机大神们帮个忙啊~
假定有如下定义,
struct st {
char name[10];
int score;
}a[3],*p=a;
请问哪个用法是正确的?
A.p->name="Tom";
B.*p,name[0]='B';
c.(*p)->name[0]='C';
D.*(*p).name='D'
好像概念定义的东西比较多,指针也学的不是很好,望大神们能把每个答案讲解下,感激不尽~
我也觉得是A,不过答案显示D,所以不是很理解,呵呵~也许是答案错了.不过真心的指针和二级指针啥的不是很懂.不好意思,B答案不是逗号,打错了,*p.name[0]='B';
▼优质解答
答案和解析
上面的同学别误导了D是正确的A项:name是个数组名,即数组的首地址,数组的地址是不能改变的!p->name="Tom"正是企图改变name数组的地址;B项:.号的优先级比*高,相当于是*(p.name[0])='B',显然是错的;C项:P是一级指...