91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C語言中的結構體怎么使用

發布時間:2022-04-02 11:19:06 來源:億速云 閱讀:441 作者:iii 欄目:編程語言

這篇文章主要講解了“C語言中的結構體怎么使用”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“C語言中的結構體怎么使用”吧!

一、關于結構體

在C語言中,結構體(struct)指的是一種數據結構,是C語言中復合數據類型(aggregate data type)的一類。

結構體可以被聲明為變量、指針或數組等,用以實現較復雜的數據結構。結構體同時也是一些元素的集合,這些元素稱為結構體的成員(member),且這些成員可以為不同的類型,成員一般用名字訪問。

結構體的定義如下所示:

struct tag { member-list } variable-list;

其中:

  • struct為結構體關鍵字;

  • tag為結構體的標志;

  • member-list為結構體成員列表,其必須列出其所有成員;

  • variable-list為此結構體聲明的變量。

在一般情況下:tag、member-list、variable-list這3部分至少要出現2個。

二、結構體常規定義

不同的定義,應用在不同場景,所以,我們編程時需要結合實際情況來定義結構體。

方法1:

定義結構體stu,此時結構體相當于一個類型,比如int,如需使用此結構體,方法同int.

struct stu {     char  aa;     short bb;     int   cc; };  struct stu stu1, stu2;

方法2:

定義結構體stu同時定義需要使用的結構體變量stu1, stu2。如后面再需要定義結構體變量,方法同1.

struct stu {     char  aa;     short bb;     int   cc; }stu1, stu2;  struct stu stu3;

方法3:

定義結構體時,結構體名稱缺省,同時定義結構體變量stu1,stu2。但后面不可再定義結構體變量。

struct {     char  aa;     short bb;     int   cc; }stu1, stu2;

提示:

這里不能像上面再定義結構體變量:(以下錯誤)

struct stu3;  struct stu stu3;

三、使用typedef定義結構體

這里先簡單說下typedef。

在C和C++編程語言中,typedef是一個關鍵字。它用來對一個數據類型取一個別名,目的是為了使源代碼更易于閱讀和理解。它通常用于簡化聲明復雜的類型組成的結構  ,但它也常常在各種長度的整數數據類型中看到,例如size_t和time_t。

維基百科

方法4:

使用typedef定義結構體同時,給stu結構體別名STU,后續定義可不用使用struct stu,直接使用STU即可。

typedef struct stu {     char  aa;     short bb;     int   cc; }STU;  STU stu1;

你會發現,其實就是通過關鍵字typedef,將STU取代了struct stu。

當然,也可以這么用:

struct stu stu1;

上面這種定義就失去了typedef的意思,所以不推薦。

方法5:

使用typedef定義結構體時,省掉結構體第一個別名stu,直接在后面加STU,使用方法同上。

typedef struct {     char  aa;     short bb;     int   cc; }STU;  STU stu1;

方法6:

還有一種符合語法規則,但意義不大的定義方式。

typedef struct stu {     char  aa;     short bb;     int   cc; };  struct stu stu1;

以上這些定義方式算是語法的知識,如果還不懂,請再次復習一下。

四、結構體大小計算

結構體的大小,我相信很多人都沒搞明白。實際編程中也是很多地方都在應用,比如:存儲、拷貝結構體時都會牽涉到結構體大小的問題。

1. 對比兩結構體大小,一樣嗎?

結構體1:

struct stu {     char  aa;     short bb;     char  cc; }stu1;

結構體2:

struct stu {     char  aa;     char  bb;     short cc; }stu2;

答案是不一樣。程序測試得出sizeof(stu1)=6, sizeof(stu2)=4.

2. 分析不一樣原因

結構體計算要遵循字節對齊原則,一般滿足三個準則:

  • 結構體變量的首地址能夠被其最寬基本類型成員的大小所整除;

  • 結構體每個成員相對于結構體首地址的偏移量(offset)都是成員大小的整數倍,如有需要編譯器會在成員之間加上填充字節;

  • 結構體的總大小為結構體最寬基本類型成員大小的整數倍,如有需要編譯器會在最末一個成員之后加上填充字節;

對于上面結構體stu1來說,最大字節:2字節,順序是 char->short->char:

C語言中的結構體怎么使用

對于上面結構體stu2來說,最大字節:2字節,順序是 char->char->short:

C語言中的結構體怎么使用

通過上面兩個表格,相信你應該明白了,改成4字節的int,原理一樣。

感謝各位的閱讀,以上就是“C語言中的結構體怎么使用”的內容了,經過本文的學習后,相信大家對C語言中的結構體怎么使用這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

桐庐县| 成安县| 龙南县| 宁夏| 保德县| 翁牛特旗| 阿瓦提县| 安顺市| 神农架林区| 崇信县| 志丹县| 宁波市| 浮梁县| 永丰县| 陆良县| 康保县| 通许县| 太康县| 织金县| 玉溪市| 南丹县| 新竹县| 西贡区| 循化| 淳安县| 富阳市| 满城县| 荃湾区| 临桂县| 钦州市| 西乌珠穆沁旗| 庆安县| 徐州市| 昂仁县| 施秉县| 周宁县| 武安市| 许昌市| 高雄市| 郯城县| 丹棱县|