如何訪問結構體成員?使用點運算符或箭頭運算符

運算符(.)用于訪問結構體變量的成員,箭頭運算符(->)用于通過指針訪問結構體成員。1. 當操作結構體變量時,如Struct person p;使用p.age=25;進行訪問;2. 當操作指向結構體的指針時,如struct person ptr;需用ptr->age=30;等價于(ptr).age。錯誤寫法包括對指針使用點運算符或未正確處理解引用優先級。判斷依據是:面對實體變量用點,面對指針用箭頭。

如何訪問結構體成員?使用點運算符或箭頭運算符

訪問結構體成員時,點運算符(.)和箭頭運算符(->)是最常用的方式。它們分別適用于不同的情況,搞清楚兩者的使用場景能避免很多低級錯誤。

如何訪問結構體成員?使用點運算符或箭頭運算符


點運算符:用于直接訪問結構體變量的成員

當你有一個結構體變量的時候,使用點號操作符來訪問它的成員是最直接的方法。

如何訪問結構體成員?使用點運算符或箭頭運算符

比如定義一個結構體:

struct Person {     char name[20];     int age; };

然后聲明一個變量:

如何訪問結構體成員?使用點運算符或箭頭運算符

struct Person p1; p1.age = 25;

這里 p1.age 就是通過點運算符訪問結構體成員。
這種方式簡單直觀,但前提是你要操作的是結構體變量本身,而不是指針。

小貼士:如果你用點運算符去操作一個指針變量,編譯器會報錯。記住一句話:“有變量,用點。”


箭頭運算符:用于通過指針訪問結構體成員

當有一個指向結構體的指針時,想訪問其中的成員,就要用箭頭運算符 ->。

繼續上面的例子:

struct Person p2; struct Person *ptr = &p2; ptr->age = 30;

這段代碼中,ptr->age 實際上等價于 (*ptr).age。
也就是說,箭頭操作符其實是先對指針解引用,再用點操作符訪問成員的簡寫方式。

常見誤區:

  • 很多人一開始會習慣性地寫成 *ptr.age,這是錯誤的,因為優先級問題會讓它變成 *(ptr.age),而 ptr 是個指針,不能直接用點。
  • 所以正確的寫法要么是 (*ptr).age,要么就是更簡潔的 ptr->age。

怎么選?看變量類型就知道

判斷該用點還是箭頭其實很簡單:

  • 如果你面對的是結構體變量(例如 struct Person p;),就用點 .
  • 如果你面對的是結構體指針(例如 struct Person *p;),就用箭頭 ->

可以這樣記:點對著“實體”,箭頭對著“地址”

舉個小例子區分一下:

struct Person p; struct Person *ptr = &p;  // 正確寫法 p.age = 20;         // 變量用點 ptr->age = 25;      // 指針用箭頭  // 錯誤寫法 ptr.age = 30;       // 錯!ptr是指針,不能用點 (*ptr).age = 35;    // 對,但啰嗦,不如箭頭簡潔

基本上就這些。剛開始容易混淆,但只要記住變量類型決定操作符,很快就能熟練使用。

? 版權聲明
THE END
喜歡就支持一下吧
點贊12 分享