C語言結(jié)構(gòu)體定義的方法匯總
什么是結(jié)構(gòu)體?
在C語言中,結(jié)構(gòu)體(struct)指的是一種數(shù)據(jù)結(jié)構(gòu),是C語言中聚合數(shù)據(jù)類型(aggregate data type)的一類。結(jié)構(gòu)體可以被聲明為變量、指針或數(shù)組等,用以實現(xiàn)較復雜的數(shù)據(jù)結(jié)構(gòu)。結(jié)構(gòu)體同時也是一些元素的集合,這些元素稱為結(jié)構(gòu)體的成員(member),且這些成員可以為不同的類型,成員一般用名字訪問。
結(jié)構(gòu)體與數(shù)組的比較
(1) 都由多個元素組成
(2) 各個元素在內(nèi)存中的存儲空間是連續(xù)的
(3) 數(shù)組中各個元素的數(shù)據(jù)類型相同,而結(jié)構(gòu)體中的各個元素的數(shù)據(jù)類型可以不相同
結(jié)構(gòu)體的定義:
C語言結(jié)構(gòu)體類型的定義模板大概為:
struct 類型名{ 成員表列 } 變量;
在成員表列中可以是幾種基本數(shù)據(jù)類型,也可以是結(jié)構(gòu)體類型。
struct 類型名{} 變量;后的分號不能漏
下面給出定義結(jié)構(gòu)體類型的幾種方法
1. 先定義結(jié)構(gòu)體類型,再定義結(jié)構(gòu)體變量。
struct student{ char no[20]; //學號 char name[20]; //姓名 char sex[5]; //性別 int age; //年齡 }; struct student stu1,stu2; //此時stu1,stu2為student結(jié)構(gòu)體變量
2. 定義結(jié)構(gòu)體類型的同時定義結(jié)構(gòu)體變量。
struct student{ char no[20]; //學號 char name[20]; //姓名 char sex[5]; //性別 int age; //年齡 } stu1,stu2;
此時還可以繼續(xù)定義student結(jié)構(gòu)體變量如:
struct student stu3;
3.直接定義結(jié)構(gòu)體變量。
struct{ char no[20]; //學號 char name[20]; //姓名 char sex[5]; //性別 int age; //年齡 } stu1,stu2;
一般不會使用第三種定義方法,因為直接定義結(jié)構(gòu)體變量stu1,stu2后就不能再繼續(xù)定義該類型的變量。
注意:
在C語言中使用struct定義結(jié)構(gòu)體類型后定義結(jié)構(gòu)體變量時struct不能省略,在C++中允許省略struct。
在c中:
struct student{ ... }; struct student stu1; //struct不可省略
在c++中:
struct student{ ... }; student stu1; //struct可省略
在C中定義結(jié)構(gòu)體類型后每次定義變量時都要使用struct,如果嫌麻煩,我們可以這樣:
typedef struct student{ ... }STUDENT; STUDENT stu1;
使用typedef給struct student取一個"別名"STUDENT
在某些情況下還可以使用#define來實現(xiàn)更簡化的結(jié)構(gòu)體定義與變量的定義,但可能會犧牲部分可讀性。
#define STUDENT struct student; STUDENT{ ... }; STUDENT stu1;
typedef和#define用法不同,甚至可以結(jié)合起來靈活使用,使用時一定要注意兩者的不同之處。
總結(jié)
以上所述是小編給大家介紹的C語言結(jié)構(gòu)體定義的方法匯總,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
相關(guān)文章
C++數(shù)據(jù)結(jié)構(gòu)之單鏈表
這篇文章主要介紹了C++數(shù)據(jù)結(jié)構(gòu)之單鏈表,鏈表是由一個個結(jié)點鏈結(jié)成的。結(jié)點包括數(shù)據(jù)域和指針域兩部分,數(shù)據(jù)域用來存儲數(shù)據(jù)元素的信息,指針域用來存儲下一個結(jié)點的地址,更詳細內(nèi)容請需要的小伙伴參考下面文章內(nèi)容2022-01-01c語言_構(gòu)建一個靜態(tài)二叉樹實現(xiàn)方法
下面小編就為大家?guī)硪黄猚語言_構(gòu)建一個靜態(tài)二叉樹實現(xiàn)方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-05-05用c語言根據(jù)可變參數(shù)合成字符串的實現(xiàn)代碼
本篇文章是對用c語言根據(jù)可變參數(shù)合成字符串的方法進行了詳細的分析介紹,需要的朋友參考下2013-05-05C++實現(xiàn)LeetCode(210.課程清單之二)
這篇文章主要介紹了C++實現(xiàn)LeetCode(210.課程清單之二),本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細內(nèi)容,需要的朋友可以參考下2021-08-08C++類靜態(tài)成員與類靜態(tài)成員函數(shù)詳解
靜態(tài)成員不可在類體內(nèi)進行賦值,因為它是被所有該類的對象所共享的。你在一個對象里給它賦值,其他對象里的該成員也會發(fā)生變化。為了避免混亂,所以不可在類體內(nèi)進行賦值2013-09-09