結(jié)構(gòu)體是一種自定義類(lèi)型,它允許程序員將不同類(lèi)型的數(shù)據(jù)項(xiàng)組合在一起,形成一個(gè)新的數(shù)據(jù)類(lèi)型。結(jié)構(gòu)體類(lèi)型是通過(guò) struct 關(guān)鍵字來(lái)定義的。
1.結(jié)構(gòu)體類(lèi)型的定義
結(jié)構(gòu)體類(lèi)型定義的一般形式為:
struct 結(jié)構(gòu)體標(biāo)簽 { 成員1類(lèi)型 成員1名; 成員2類(lèi)型 成員2名; ……};
其中,結(jié)構(gòu)體標(biāo)簽是這個(gè)結(jié)構(gòu)體類(lèi)型的名稱(chēng),成員類(lèi)型表示每個(gè)數(shù)據(jù)項(xiàng)的數(shù)據(jù)類(lèi)型,成員名則是每個(gè)數(shù)據(jù)項(xiàng)的名稱(chēng)。
2.結(jié)構(gòu)體類(lèi)型和結(jié)構(gòu)體變量的區(qū)別
結(jié)構(gòu)體類(lèi)型只是定義了一種新的數(shù)據(jù)類(lèi)型,而結(jié)構(gòu)體變量則是根據(jù)這個(gè)數(shù)據(jù)類(lèi)型定義的實(shí)際變量??梢园呀Y(jié)構(gòu)體類(lèi)型看成是一個(gè)模板或者藍(lán)圖,而結(jié)構(gòu)體變量則是基于這個(gè)模板創(chuàng)建的具體對(duì)象。
例如,假設(shè)現(xiàn)在要定義一個(gè)描述學(xué)生信息的結(jié)構(gòu)體,那么就可以定義以下結(jié)構(gòu)體類(lèi)型:
struct Student { char name[20]; int age; char gender;};
在上面的結(jié)構(gòu)體類(lèi)型中,Student 是這個(gè)結(jié)構(gòu)體類(lèi)型的標(biāo)簽;name、age、gender 分別是成員的名稱(chēng);char 和 int 則是成員的類(lèi)型。
定義好結(jié)構(gòu)體類(lèi)型之后,就可以定義以下結(jié)構(gòu)體變量:
struct Student stu1;struct Student stu2;
其中,stu1 和 stu2 都是基于 Student 結(jié)構(gòu)體類(lèi)型定義的實(shí)際變量。這些變量可以像普通變量一樣被使用,例如:
strcpy(stu1.name, "小明");stu1.age = 18;stu1.gender = 'M';
以上代碼向 stu1 這個(gè)學(xué)生信息變量中賦值。