C語言中的數組只能允許程序員定義存儲相同類型數據。但是結構是C語言編程中允許您存儲不同數據類型的數據。
結構體的定義
要想定義結構,必須用到struct關鍵字,struct的語句格式:
在struct 中聲明了一個含有若干新成員的數據類型。
tag是結構體標簽。
member-list是標準的變量定義,比如 int i; 或者 float f,或者其他有效的變量定義。
variable-list結構變量,定義在結構的末尾,最后一個分號之前,您可以指定一個或多個結構變量。下面是聲明 Book 結構的方式:
在一般情況下,tag、member-list、variable-list這 3 部分至少要出現 2 個。以下為實例:
在上面的聲明中,第一個和第二聲明被編譯器當作兩個完全不同的類型,即使他們的成員列表是一樣的,如果令 t3=&s1,則是非法的。
結構體的成員可以包含其他結構體,也可以包含指向自己結構體類型的指針,而通常這種指針的應用是為了實現一些更高級的數據結構如鏈表和樹等。
如果兩個結構體互相包含,則需要對其中一個結構體進行不完整聲明,如下所示:
結構體變量的初始化
和其它類型變量一樣,對結構體變量可以在定義時指定初始值。
執行輸出結果為:
title : C 語言
author: RUNOOB
subject: 編程語言
book_id: 123456
訪問結構成員
為了訪問結構的成員,我們使用成員訪問運算符(.)。成員訪問運算符是結構變量名稱和我們要訪問的結構成員之間的一個句號。您可以使用struct關鍵字來定義結構類型的變量。下面的實例演示了結構的用法:
當上面的代碼被編譯和執行時,它會產生下列結果:
結構作為函數參數
您可以把結構作為函數參數,傳參方式與其他類型的變量或指針類似。您可以使用上面實例中的方式來訪問結構變量:
當上面的代碼被編譯和執行時,它會產生下列結果:
指向結構的指針
您可以定義指向結構的指針,方式與定義指向其他類型變量的指針相似,如下所示:
struct Books *struct_pointer;
現在,您可以在上述定義的指針變量中存儲結構變量的地址。為了查找結構變量的地址,請把 & 運算符放在結構名稱的前面,如下所示:
struct_pointer = &Book1;
為了使用指向該結構的指針訪問結構的成員,您必須使用 -> 運算符,如下所示:
struct_pointer->title;
讓我們使用結構指針來重寫上面的實例,這將有助于您理解結構指針的概念:
當上面的代碼被編譯和執行時,它會產生下列結果:
審核編輯 黃宇
-
嵌入式
+關注
關注
5082文章
19122瀏覽量
305107 -
存儲
+關注
關注
13文章
4311瀏覽量
85838 -
C語言
+關注
關注
180文章
7604瀏覽量
136794
發布評論請先 登錄
相關推薦
評論