繁体   English   中英

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

[英]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应该是语法错误,因为它不能是有效的表达式,原因如下。

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

因此,两种方式都是编译产生错误。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM