如下图,C语言结构体,*p=&temp,这个p是存放temp的地址吧,p->name怎么就是temp.name的值?不理解求助

是不是题前面应该这样p=&temp,因为(*p)=temp,p->name等于(*p).name,所以p->name的值才会使chou?

A选项对吗,为什么

结构体指针访问成员使用->,结构体变量访问成员使用.,运算符优先级->大于*大于+。

所以A是正确的,p->name和temp.name相同。

B选项错误,->前面不是个指针;

C表达式正确,但结果有疑问,按优先级应该这样计算:(*(p->name)) + 2,加号前值是字符c,+2后应该是它ascii码99和2相加结果应该默认是int值101,按字符输出才是e,所以我觉得结果有疑问;

D正确指针后移指向o。

追问

能帮我解释一下这个语句吗,“struct student temp,*p=&temp;”

追答

定义了一个结构体变量temp和结构体指针p,
也可以不适用关键字struct,直接用student temp,*p=&temp;

温馨提示:答案为网友推荐,仅供参考
第1个回答  2021-03-18
这就是一个规定的语法,规定的表示形式而已,没啥道理可讲追问

A选项是对吗

追答

老实说,四个答案都不规范,只有B错的更很而已。这本书可以扔了

第2个回答  2021-03-18
你的分析是对的。题中答案A是对的,答案B是错的。追问

能帮我解释一下这个语句吗,“struct student temp,*p=&temp;”

追答

struct student temp,*p=&temp;

这一行中定义了一个结构体变量temp,和一个指向此结构体的指针p,并初始化为指向temp。

相似回答