B和C不用加括号吗??.和->的优先级大于*啊

问题遇到的现象和发生背景
问题相关代码,请勿粘贴截图
运行结果及报错内容
我的解答思路和尝试过的方法
我想要达到的结果

img

不用加呀
p指向x,那么p其实就是x
p才能点出pk来
你先取得它的值,它一个struct类型哪来的值呀,要里面的元素才有值

这是一个选择题吧 A是对的 b和c其实都是不对的
这里有几个知识点,指针和变量,以及结构体对象的访问方式,(用.和用->的区别),除此之外,还有一个char (c语言字符串的知识点)
首先,但看题目,其实想考察的是你指针和结构体对象访问方式的差异。
第一:指针是指向的一块地址,取指针内部指向的内存中存储的内容/对象,可以用给指针变量前面加*
第二:你要知道结构体对象的访问两种方式(.和->的方式),.是变量直接访问,->是指针对象或者地址对象(描述不准确,懒得关注了)访问的方式。
第三:在上述的基础上,我们就可以分析逻辑了:
x是一个结构体对象,那么结构体成员访问可以用.的方式 x.name
如果用地址的话,可以试试 (&x)->name
而p是一个结构体变量指针,访问的形式可以是 p->name, 或者先取指针内部对象,在用.的方式 (
p).name 这个和(*(&x)a).name一样的逻辑分析。

你已经知道了运算符优先级相关,在上述逻辑的基础上,也要注意括号的运用,保证逻辑正确。

img