[英]Accessing a pointer in a struct through a pointer
因此,我一直在查阅结构,同时阅读链接列表,并发现了一个想法。
如何使用指向结构的指针正确访问结构中的指针?
例如,我有一个结构的声明:
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
。 这是正确/唯一/正确/正确的方法吗? 他们俩都会工作吗?
对于y
值,使用pter->y
,对于存储在y
值,使用*pter->y
(相当于*(pter->y)
)。
注意: ->
运算符的优先级高于*
Dereference运算符,这就是为什么*pter->y
== *(pter->y)
编辑:在评论的基础上。
表达式pter-> *y
应该是语法错误,因为它不能是有效的表达式,原因如下。
*
被解释为一元解除引用运算符并应用于y
,那么y
是未知的变量名(没有pter
)。 *
被视为乘法运算符,那么->
不能出现在*
之前。 因此,两种方式都是编译产生错误。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.