知識分享:C語言知識干貨系列——結(jié)構(gòu)體篇
在前面我們知道變量和數(shù)組都可以用來存儲數(shù)據(jù),變量用來存儲單個數(shù)據(jù),數(shù)組可以用來存儲一組同類型的數(shù)據(jù),但你有沒有發(fā)現(xiàn)——它們都只適合單一屬性的數(shù)據(jù)。那現(xiàn)實(shí)生活中,很多對象都是具有多屬性的。例如一個人,都具有姓名、年齡、身高、體重等各種屬性。那該如何是好呢?

別急,C語言中的結(jié)構(gòu)體屬于復(fù)合類型,它是其他數(shù)據(jù)類型構(gòu)造出的一個新數(shù)據(jù)類型。結(jié)構(gòu)體可以擁有眾多的成員,而且各成員的數(shù)據(jù)類型可以各不相同。因此,它是非常適合擁有多屬性的對象進(jìn)行存儲。
結(jié)構(gòu)體
Ⅰ,結(jié)構(gòu)體類型的定義
定義格式為:
下面試著定義關(guān)于人的結(jié)構(gòu)體類型,例如:
特別注意,上面定義的是一個結(jié)構(gòu)體類型,它是不能用于存儲數(shù)據(jù)的。就好像int 是一個數(shù)據(jù)類型,它是不能存儲數(shù)據(jù)一樣。如果要存儲數(shù)據(jù)需要再定義出該類型的變量,如:
下面就說一下如何定義結(jié)構(gòu)體類型的變量。
Ⅱ,結(jié)構(gòu)體變量的定義
1,先定義結(jié)構(gòu)體類型,再定義結(jié)構(gòu)體變量,例如:
2,在定義結(jié)構(gòu)體類型的同時定義結(jié)構(gòu)體變量,例如:
3,定義無名結(jié)構(gòu)體類型變量,例如:
Ⅲ,結(jié)構(gòu)體變量的初始化與賦值
再定義結(jié)構(gòu)體變量時,可以對其進(jìn)行初始化。結(jié)構(gòu)體變量的初始化方式與數(shù)組類似,使用大括號將初始值列表括起來。不過,列表中初始值的類型和順序要與結(jié)構(gòu)體成員的類型和順序匹配。例如:
Ⅳ,結(jié)構(gòu)體成員的訪問
C語言中,使用成員訪問運(yùn)算符(“.”)來訪問結(jié)構(gòu)體變量的各成員,我們常說的點(diǎn)運(yùn)算說的就是它了:
Ⅴ,結(jié)構(gòu)體的大小
基本數(shù)據(jù)類型都有相對固定的大小,而結(jié)構(gòu)體是符合數(shù)據(jù)類型,它的成員的類型、數(shù)量都是不固定的,但我們可以通過sizeof運(yùn)算符來獲取結(jié)構(gòu)體的大小,例如:
Ⅵ,結(jié)構(gòu)體的嵌套
C語言中可以將一個結(jié)構(gòu)體作為另外一個結(jié)構(gòu)體的成員,即允許結(jié)構(gòu)體的嵌套使用,如下例子:
2,結(jié)構(gòu)體的運(yùn)用
上面介紹了結(jié)構(gòu)體類型與結(jié)構(gòu)體變量之后,下面我們就要學(xué)著運(yùn)用它了。不要讓結(jié)構(gòu)體孤零零的存在,要讓它發(fā)揮應(yīng)用的作用,應(yīng)該讓它與指針、數(shù)組、函數(shù)等結(jié)合起來,只有這樣我們的代碼才會靈活、高效、優(yōu)美。
至于結(jié)構(gòu)體與指針、結(jié)構(gòu)體與數(shù)組、結(jié)構(gòu)體與函數(shù)以及結(jié)構(gòu)體與字符串的打打殺殺,亦或是人情世故,就留給我們自己去體會吧!
寫在最后:對于準(zhǔn)備學(xué)習(xí)C/C++編程的小伙伴,如果你想更好的提升你的編程核心能力(內(nèi)功)不妨從現(xiàn)在開始!
微信公眾號:C語言編程學(xué)習(xí)基地
整理分享(多年學(xué)習(xí)的源碼、項(xiàng)目實(shí)戰(zhàn)視頻、項(xiàng)目筆記,基礎(chǔ)入門教程)
歡迎轉(zhuǎn)行和學(xué)習(xí)編程的伙伴,利用更多的資料學(xué)習(xí)成長比自己琢磨更快哦!
編程學(xué)習(xí)書籍分享:

粉絲編程交流:
