一起來(lái)看看C語(yǔ)言世界中的結(jié)構(gòu)體
一、結(jié)構(gòu)體的概念:
結(jié)構(gòu)體是由一批數(shù)據(jù)聚合而成的結(jié)構(gòu)型數(shù)據(jù)。
引入結(jié)構(gòu)體,程序設(shè)計(jì)人員就可以根據(jù)需要定義用于描述事物不同屬性的多個(gè)數(shù)據(jù)項(xiàng),然后把這些數(shù)據(jù)項(xiàng)聚合成一個(gè)整體(結(jié)構(gòu)體)來(lái)表示事物。
舉個(gè)例子:
每個(gè)學(xué)生都有自己的信息。
struct student//結(jié)構(gòu)體名 { int num;//結(jié)構(gòu)體成員:學(xué)號(hào) char name[20];//結(jié)構(gòu)體成員:名字 float score;//結(jié)構(gòu)體成員:成績(jī) }; //別忘記了這個(gè)分號(hào)
以上就是結(jié)構(gòu)體的定義。
注意:結(jié)構(gòu)體成員可以是任意類(lèi)型的變量,但不允許是自身類(lèi)型的變量。(不能自己的體內(nèi)再放一個(gè)自己)
二、結(jié)構(gòu)體變量的定義和初始化
結(jié)構(gòu)體是一種數(shù)據(jù)類(lèi)型,自然和其他基本數(shù)據(jù)類(lèi)型一樣,在定義了結(jié)構(gòu)體類(lèi)型后,還需要定義結(jié)構(gòu)體類(lèi)型的變量,C語(yǔ)言編譯器才會(huì)為結(jié)構(gòu)體變量分配存儲(chǔ)單元,然后才能通過(guò)結(jié)構(gòu)體變量來(lái)操作和訪問(wèn)結(jié)構(gòu)體的數(shù)據(jù)。
結(jié)構(gòu)體變量的定義
(1)單獨(dú)定義
struct 結(jié)構(gòu)體名 { 類(lèi)型名 結(jié)構(gòu)體成員1; 類(lèi)型名 結(jié)構(gòu)體成員2; 類(lèi)型名 結(jié)構(gòu)體成員3; }; struct 結(jié)構(gòu)體名 結(jié)構(gòu)體變量名表;//結(jié)構(gòu)體變量名表就相當(dāng)于 //我們輸入學(xué)生信息所指定的那個(gè)學(xué)生
(2)混合定義(在定義結(jié)構(gòu)體的同時(shí)定義結(jié)構(gòu)體變量)
struct 結(jié)構(gòu)體名 { 類(lèi)型名 結(jié)構(gòu)體成員1; 類(lèi)型名 結(jié)構(gòu)體成員2; 類(lèi)型名 結(jié)構(gòu)體成員3; }結(jié)構(gòu)體變量名表;//即直接定義學(xué)生姓名,不用重復(fù)寫(xiě)struct 結(jié)構(gòu)體名,然后再寫(xiě)學(xué)生姓名
結(jié)構(gòu)體變量的初始化
和其他基本類(lèi)型一樣,結(jié)構(gòu)體變量也可以初始化
初始化的格式一般為:
struct 結(jié)構(gòu)體名 結(jié)構(gòu)體變量名 = { 初始化值1, 初始化值2......初始化值n};
接下來(lái)我們使用上面學(xué)生信息來(lái)舉個(gè)例:
struct student//結(jié)構(gòu)體名 { int num;//結(jié)構(gòu)體成員:學(xué)號(hào) char name[20];//結(jié)構(gòu)體成員:名字 float score;//結(jié)構(gòu)體成員:成績(jī) }; //別忘記了這個(gè)分號(hào)
struct student = { 1 張三 88.9};
三、結(jié)構(gòu)體變量的使用(" . "與" -> "的使用)
(1)" . "的使用(1級(jí)運(yùn)算符,結(jié)合方向從左到右):
結(jié)構(gòu)體變量名 . 結(jié)構(gòu)體成員名
依然使用學(xué)生信息來(lái)舉例:
struct student//結(jié)構(gòu)體名 { int num;//結(jié)構(gòu)體成員:學(xué)號(hào) char name[20];//結(jié)構(gòu)體成員:名字 float score;//結(jié)構(gòu)體成員:成績(jī) }stu1,stu2; stu1.score = 90.0;
(2)"->"的使用(1級(jí)運(yùn)算符,結(jié)合方向從左到右):
格式:
結(jié)構(gòu)體指針變量名->結(jié)構(gòu)體成員名
還是那個(gè)例子:
struct student//結(jié)構(gòu)體名 { int num;//結(jié)構(gòu)體成員:學(xué)號(hào) char name[20];//結(jié)構(gòu)體成員:名字 float score;//結(jié)構(gòu)體成員:成績(jī) }stu1,stu2; struct student *p=&stu1; p->score=55.5;//意為將55.5賦值給p指向的結(jié)構(gòu)體變量stu1的score成員
總結(jié)
本篇文章就到這里了,希望能夠給你帶來(lái)幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!
相關(guān)文章
MFC Frame-Splitter模型實(shí)例原理解析
這篇文章主要介紹了MFC Frame-Splitter模型實(shí)例原理解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-07-07C++ Primer中&、*符號(hào)的多重定義與int *p和int* p的區(qū)別講解
今天小編就為大家分享一篇關(guān)于C++Primer中&、*符號(hào)的多重定義與int *p和int* p的區(qū)別講解,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧2019-04-04C語(yǔ)言中sizeof函數(shù)的基本使用總結(jié)
這篇文章主要給大家介紹了關(guān)于C語(yǔ)言中sizeof函數(shù)的基本使用的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。2018-03-03C++應(yīng)用Eigen庫(kù)對(duì)應(yīng)實(shí)現(xiàn)matlab中部分函數(shù)問(wèn)題
這篇文章主要介紹了C++應(yīng)用Eigen庫(kù)對(duì)應(yīng)實(shí)現(xiàn)matlab中部分函數(shù)問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-12-12C++實(shí)現(xiàn)大整數(shù)乘法(字符串乘法)
這篇文章主要為大家詳細(xì)介紹了C++實(shí)現(xiàn)大整數(shù)乘法、字符串乘法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-09-09初學(xué)C++之自定義類(lèi)型名簡(jiǎn)化詳解
下面小編就為就大家?guī)?lái)一篇初學(xué)C++之自定義類(lèi)型名簡(jiǎn)化詳解。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-09-09C語(yǔ)言實(shí)現(xiàn)班級(jí)檔案管理系統(tǒng)課程設(shè)計(jì)
這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)班級(jí)檔案管理系統(tǒng)課程設(shè)計(jì),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-12-12