C語言結(jié)構(gòu)體類型
C語言中允許用戶自己建立由不同類型數(shù)據(jù)組成的組合型的數(shù)據(jù)結(jié)構(gòu),它稱為結(jié)構(gòu)體。在其他一些高級(jí)語言中稱“記錄”。
一般形式
struct 結(jié)構(gòu)體名
{成員表列};
結(jié)構(gòu)體類型的名字是由一個(gè)關(guān)鍵字struct和結(jié)構(gòu)體名組成而成的,結(jié)構(gòu)體名是用戶指定的,又稱“結(jié)構(gòu)體標(biāo)記”,以區(qū)別于其他結(jié)構(gòu)體類型。
花括號(hào)內(nèi)是該結(jié)構(gòu)體所包括的子項(xiàng),稱為結(jié)構(gòu)體的成員,對(duì)各個(gè)成員都應(yīng)該進(jìn)行類型聲明。
即
類型名 成員名
成員表列也稱為域表,每一個(gè)成員是結(jié)構(gòu)體中的一個(gè)域,成員命名規(guī)則與變量名相同。
C語言如何定義結(jié)構(gòu)體類型變量
先聲明結(jié)構(gòu)體類型,再定義該類型的變量
- 在定義了結(jié)構(gòu)體變量后,系統(tǒng)會(huì)為之分配內(nèi)存單元。根據(jù)結(jié)構(gòu)體類型中包含的成員情況,在Visual C++中占63個(gè)字節(jié)。
- 這種聲明方式是聲明類型和定義變量分離,在聲明類型后可以隨時(shí)定義變量,比較靈活。
在聲明類型的同時(shí)定義變量
- 一般形式
struct 結(jié)構(gòu)體名
{
成員表列
}變量名表列;
- 聲明類型和定義變量放在一起進(jìn)行,能直接看到結(jié)構(gòu)體的結(jié)構(gòu),比較直觀。
- 在寫小程序時(shí)用此方式比較方便,但寫大程序時(shí),往往要求對(duì)類型的聲明和對(duì)變量的定義分別放在不同的地方 ,以使程序結(jié)構(gòu)清晰,便于維護(hù)。
不指定類型名而直接定義結(jié)構(gòu)體類型變量
- 一般形式
struct
{
成員表列
}變量名表列;
-
指定了一個(gè)無名的結(jié)構(gòu)體類型,它沒有名字。
顯然不能再以此結(jié)構(gòu)體類型去定義其他變量。
結(jié)構(gòu)體類型與結(jié)構(gòu)體變量是不同的概念,不要混同,只能對(duì)變量賦值、存取或運(yùn)算,而不能對(duì)一個(gè)類型賦值、存取或運(yùn)算。
結(jié)構(gòu)體類型中的成員名可以與程序中的變量名相同,但二者不代表同一對(duì)象,對(duì)結(jié)構(gòu)體變量中的成員,可以單獨(dú)使用,它的作用與地位相當(dāng)于普通變量。
C語言結(jié)構(gòu)體變量的初始化和引用
在定義結(jié)構(gòu)體變量時(shí)可以對(duì)它的成員初始化,初始化列表是用花括號(hào)括起來的的一些常量,這些常量依次賦給結(jié)構(gòu)體變量中的各成員。
可以引用結(jié)構(gòu)體變量中成員的值,引用方式為:
結(jié)構(gòu)體變量名.成員名
“.”是成員運(yùn)算符,它在所有的運(yùn)算符中優(yōu)先級(jí)最高,如果成員本身又屬于一個(gè)結(jié)構(gòu)體類型,則要用若干個(gè)成員運(yùn)算符,一級(jí)一級(jí)地找到最低的一級(jí)的成員。
對(duì)結(jié)構(gòu)體變量的成員可以像普通變量一樣進(jìn)行各種運(yùn)算,同類的結(jié)構(gòu)體變量可以互相賦值。
可以引用結(jié)構(gòu)體變量的成員的地址,也可以引用結(jié)構(gòu)體變量的地址,結(jié)構(gòu)體變量的地址主要用作函數(shù)參數(shù),傳遞結(jié)構(gòu)體變量的地址。
C語言結(jié)構(gòu)體變量案例
#include
int main()
{
struct Student{ //定義學(xué)生類結(jié)構(gòu)體
int stuId=10;//學(xué)號(hào)
char sex='F';//性別
}stu1;
printf("%d\\n",stu1.stuId);//輸出學(xué)號(hào)
printf("%c\\n",stu1.sex);//輸出性別
return 0;
}
編譯運(yùn)行結(jié)果:
10
F
--------------------------------
Process exited after2.405 secondswith return value0
請(qǐng)按任意鍵繼續(xù). . .
-
C語言
+關(guān)注
關(guān)注
180文章
7605瀏覽量
136930 -
C++
+關(guān)注
關(guān)注
22文章
2109瀏覽量
73677 -
結(jié)構(gòu)體
+關(guān)注
關(guān)注
1文章
130瀏覽量
10848
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論