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