簡體   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