因此,我一直在查阅结构,同时阅读链接列表,并发现了一个想法。
如何使用指向struct的指针正确访问结构中的指针?
例如,我有一个结构声明:
typedef struct Sample{
int x;
int *y;
} Sample;
Sample test, *pter; // Declare the struct and a pointer to it.
pter = &test;
所以现在我有一个指向结构的指针,我知道我可以像int x
一样访问pter->x
中的数据:*y
,这与此相同。但是,我无法选择/弄清楚如何通过指针访问*pter->y
。
我的一位朋友说我应该这样做:pter->*y
,但我认为这样做会更有意义:{{1}}。这是正确/唯一/正确/正确的方法吗?他们俩都会工作吗?
答案 0 :(得分:4)
对于y
使用pter->y
的值,以及y
存储的值,使用*pter->y
(相当于*(pter->y)
)。
注意:->
运算符的precedence高于*
取消引用运算符,这就是*pter->y
== *(pter->y)
编辑:基于评论。
表达式pter-> *y
应该是语法错误,因为它不能是有效的表达式,原因如下。
*
被解释为一元解除引用运算符并应用于y
,那么y
是未知变量名称(不含pter
)。 *
视为乘法运算符,则->
之前无法显示*
。因此,两种方式都是编译产生错误。