我正在阅读关于链表的内容,同时也在研究结构体。我有一个问题:
当我使用指向结构体的指针时,如何正确地访问结构体中的指针?
例如,我声明了如下结构体:
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
。哪个是正确/唯一/适当/正确的做法?两种方法都可以吗?
pter>*y
? - Rivasapter-> *y
,那么 (1) 如果应用于y
的是*
,那么y
就是未知的(没有pter
)(2) 如果*
用作乘法运算符,则->
不能出现在*
之前。因此,在两种情况下都会出现编译错误。 - Grijesh Chauhan*
被GCC编译器解释为*
,因为它接受一个有效的操作数标识符在*
之前(根据错误消息)。请注意:在不同的编译器中,产生的错误消息可能会有所不同。了解语言标准可以告诉我们什么是有效的语法。但不会说任何关于应该是什么编译器消息的内容。这取决于编译器(更好的编译器会给出更好的消息)。尽管错误消息应该是从用于描述语法的语法中推导出来的。 - Grijesh Chauhan