ps:需要快速看結論的,直接看文末總結歸納,需要理解的可以從文首開始看。
p->member執行為p+offset_member(目標的記憶體位址)
s.member變成訪問&s+offset_member(目標的記憶體位址)
因此實際上功能完全一致,看起來 p->member更加直接一些,只不過s.member多了乙個先去s去位址的操作(&s).
因此,點運算子(.)應用於結構體變數,箭頭運算子(->)應用於結構體指標.
例:結構名.成員
str.name
指向結構的指標->成員
p->name
點運算子(.)用於結構體變數訪問成員。
箭頭運算子(->)用於結構體指標變數訪問成員。
C語言與C 中點運算子與箭頭運算子的區別
在c 中i如果是物件,就可以通過 來呼叫i中的成員變數。如果i是指標的話,就不能通過 來呼叫,而只能使用 來呼叫。在c語言中不存在物件的概念。這種情況的出現是因為使用了結構,例如 struct candybar 在程式中 candybar snack 我們就可以用snack.weight來取得結構中...
C語言 運算子和 運算子
變數 代表 取變數的位址 變數 代表 指標型的變數 取址運算子 用來取得其運算元的位址。如果運算元 x 的型別為 t,則表示式 x 的型別是 t 型別指標 指向 t 的指標 取址運算子的運算元必須是在記憶體中可定址到的位址。換句話說,該運算子只能用於函式或物件 例如左值 而不可以用於位欄位,以及那些...
C 中 運算子 和 運算子
運算子定義在將可空型別分配給非可空型別時返回的預設值。int?c null 若 c 為 null,則 d 為 1,否則把 c 值賦予 d int d c 1 型別名稱後加問號,如 int?i null double?d null bool?b null 可指定可為 null 的 int double...