通过指针访问结构中的指针

时间:2013-10-12 14:59:34

标签: c pointers struct

因此,我一直在查阅结构,同时阅读链接列表,并发现了一个想法。

  

如何使用指向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}}。这是正确/唯一/正确/正确的方法吗?他们俩都会工作吗?

1 个答案:

答案 0 :(得分:4)

对于y使用pter->y的值,以及y存储的值,使用*pter->y(相当于*(pter->y))。

注意:->运算符的precedence高于*取消引用运算符,这就是*pter->y == *(pter->y)

的原因

编辑:基于评论。

表达式pter-> *y应该是语法错误,因为它不能是有效的表达式,原因如下。

  1. 如果*被解释为一元解除引用运算符并应用于y,那么y是未知变量名称(不含pter)。
  2. 如果将*视为乘法运算符,则->之前无法显示*
  3. 因此,两种方式都是编译产生错误。