[英]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.