因此,我在阅读邻接链表时一直在查看结构,并想到了一个想法。
How do I properly access a pointer in a struct using a pointer to the 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
时遇到了麻烦。
我的一个 friend 说我应该这样做:*pter->y
,但是我认为这样做更有意义:pter->*y
。哪个是正确/唯一/适当/正确的方法?也许它们都可以工作?
最佳答案
对于 y
的值使用 pter->y
,对于存储在 y
的值使用 *pter->y
(相当于 *(pter->y)
)。
备注:precedence ->
操作符高于 *
取消引用操作符,这就是为什么 *pter->y
== *(pter->y )
编辑:根据评论。
表达式 pter-> *y
应该是一个语法错误,因为它不是一个有效的表达式,原因如下。
- 如果
*
被解释为一元取消引用运算符并应用于y
,则y
是未知变量名(没有pter
)。 - 如果
*
被视为乘法运算符,则->
不能出现在*
之前。
所以在这两种情况下编译都会产生错误。
关于c - 通过指针访问结构中的指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19335573/