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

結構體成員的訪問

發布時間: 2023-11-04 16:19:52

㈠ 如何訪問結構體指針的結構體指針成員

1、該種方法用指針指向一個結構體,使用時p->成員名。

struct Studentp;

struct Student stu1={001,「zb」,90.5};

p=&stu1;

printf(「學號 姓名 分數 」);

printf("%d %s %0.1f ",p->num,p->name,p->score);*/

2、該種方法是定義一個指針變數,只指向一個struct Student的結構體

struct Student* p;

struct Student stu={001,"zhao",90.5};

p=&stu;

printf("學號 姓名 分數 ");

printf("%d %s %0.1f ",(*p).num,(*p).name,(*p).score);*/

(1)結構體成員的訪問擴展閱讀

指向結構體變數的指針

除了通過「結構體變數名.成員名」的方式引用結構體變數中的成員,除了這種方法之外還可以使用指針。&student1 表示結構體變數 student1 的首地址,即 student1 第一個項的地址。如果定義一個指針變數 p 指向這個地址的話,p 就可以指向結構體變數 student1 中的任意一個成員。

用指針引用結構體變數成員的方式是:(*指針變數名).成員名

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

從該程序也可以看出:因為指針變數 p 指向的是結構體變數 student1 第一個成員的地址,即字元數組 name 的首地址,所以 p 和 (*p).name 是等價的。

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

c語言 對結構體類型的變數的成員的訪問,無論成員是何種數據類型都可使用的運算符是()。

通常,訪問一個結構體的變數的成員使用的運算符是點;比如一個結構體變數為sudent,它有一個成員為name,要訪問結構體變數student中的成員name,直接可使用student.name來訪問;
補充:當我們定義了一個指向結構體變數的指針時,可用運算符->去訪問他的成員。

㈢ c語言 結構體訪問成員(·)是什麼意思,理解不到。

因為結構是一個集合,由若干成員構成,訪問其成員就用下面這個形式:
結構變數名.成員名
舉例如下:
struct person //定義結構類型
{
int weight,height;
float salary;
}
struct person zhangsan;//定義結構變數名
以下是訪問結構成員:
zhangsan.height=176;
zhangsan.salary=6588;

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

第一種寫法:

(*a).p=&b;

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

第二種寫法:

a->p=&b;

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

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

(4)結構體成員的訪問擴展閱讀:

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

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

注意,*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 這個成員中的內容。

熱點內容
wow刷碎片腳本 發布:2024-11-29 15:58:24 瀏覽:589
明小子源碼 發布:2024-11-29 15:15:30 瀏覽:143
蘋果8plus什麼配置 發布:2024-11-29 14:16:36 瀏覽:677
androidmvp結構 發布:2024-11-29 14:16:34 瀏覽:535
androidsqlite命令 發布:2024-11-29 14:04:38 瀏覽:156
信用卡分期演算法 發布:2024-11-29 13:50:56 瀏覽:807
安卓手機dll文件為什麼打不開 發布:2024-11-29 13:40:49 瀏覽:1001
百分之五十石碳酸怎麼配置 發布:2024-11-29 13:38:56 瀏覽:972
我的世界伺服器如何裝資源包 發布:2024-11-29 13:25:48 瀏覽:20
mc伺服器的ip是什麼 發布:2024-11-29 13:23:33 瀏覽:568