3

因此,我在阅读邻接链表时​​一直在查看结构并想到了一个想法。

如何使用指向结构的指针正确访问结构中的指针?

例如,我有一个这样的结构声明:

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。哪种方法是正确的/唯一的/正确的/正确的?也许他们两个都可以工作吗?

4

1 回答 1

4

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

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

编辑:基于评论。

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

  1. 如果*被解释为一元解引用运算符并应用于yy则为未知变量名(没有pter)。
  2. 如果*被视为乘法运算符,则->不能出现在*.

因此,无论哪种方式,编译都会产生错误。

于 2013-10-12T15:01:34.243 回答