當前位置:首頁 » 密碼管理 » 訪問結構體成員變數

訪問結構體成員變數

發布時間: 2024-05-30 14:50:04

c語言結構體指針成員所指向的變數如何訪問

第一種寫法:

(*a).p=&b;

.的優先順序高於*,(*pointer)兩邊的括弧不能少。如果去掉括弧寫作*pointer.memberName,那麼就等效於*(pointer.memberName),這樣意義就完全不對了。

第二種寫法:

a->p=&b;

->是一個新的運算符,習慣稱它為「箭頭」,有了它,可以通過結構體指針直接取得結構體成員;這也是->在C語言中的唯一用途。

結構體是一種數據類型,是一種創建變數的模板,編譯器不會為它分配內存空間,就像 int、float、char 這些關鍵字本身不佔用內存一樣;結構體變數才包含實實在在的數據,才需要內存來存儲。下面的寫法是錯誤的,不可能去取一個結構體名的地址,也不能將它賦值給其他變數。

(1)訪問結構體成員變數擴展閱讀:

用指針引用結構體變數成員方式總結與技巧:

一、(*指針變數飢兄名).成員名

注意,*p 兩邊的括弧不可省略,因為成員運算符「.」的優先順序高於指針運算符「*」,所以如果 *p 兩邊的括弧省略的話,那麼 *p.num 就等價於 *(p.num) 了。

因為指針變數 p 指向的是結構體變數第一個成員的地址,即字元數組爛棚襲 name 的首地址,所以 p 和 (*p).name 是等價的。

「等價」僅僅是說它們表示的是同一個內存單元的地址,但它們的類型是不同的。指針變數 p 是 struct 型的,而 (*p).name 是 char* 型的。所以在 strcpy 中不能將 (*p).name 改成 p。用 %s 進行輸入或輸出時,輸入參數或輸出參數也只能寫成 (*p).name 而不能寫成 p。

二、直接用:指針變數名->成員名

來代替,它們是等價的。「->」是「指向結構體成員運算符」,它的優先順序同結構體成員運算符「.」一樣高和啟。p->num 的含義是:指針變數 p 所指向的結構體變數中的 num 成員。p->num 最終代表的就是 num 這個成員中的內容。

⑵ c語言中的箭頭運算符和點運算符有啥區別

你好!
箭頭是指針訪問成員變數的
點運算符是用於結構體變數訪問結構體成員變數的
也就是說:如果定義的結構變數是指針
那麼要訪問它的成員變數用箭頭
如果定義的是結構體變數的話就是用點
希望對你有所幫助,望採納。

熱點內容
lol機器人q腳本 發布:2024-07-27 18:10:43 瀏覽:453
icloud沒密碼怎麼注銷 發布:2024-07-27 17:45:16 瀏覽:38
c語言文件讀入 發布:2024-07-27 17:22:30 瀏覽:269
200kw負荷如何配置計量 發布:2024-07-27 17:19:59 瀏覽:907
c語言數組的最大長度 發布:2024-07-27 17:04:07 瀏覽:327
安卓手機怎麼變成充電寶 發布:2024-07-27 16:51:02 瀏覽:943
java高級課程 發布:2024-07-27 16:42:01 瀏覽:400
win10電腦怎麼看wifi密碼 發布:2024-07-27 16:03:13 瀏覽:516
豐田探駿哪個配置好 發布:2024-07-27 15:47:13 瀏覽:784
虛擬化的雲存儲 發布:2024-07-27 15:27:36 瀏覽:765