什么是結構體?
在C語言中,結構體(struct)指的是一種數據結構,是C語言中聚合數據類型(aggregate data type)的一類。結構體可以被聲明為變量、指針或數組等,用以實現較復雜的數據結構。結構體同時也是一些元素的集合,這些元素稱為結構體的成員(member),且這些成員可以為不同的類型,成員一般用名字訪問。
結構體與數組的比較
(1) 都由多個元素組成
(2) 各個元素在內存中的存儲空間是連續的
(3) 數組中各個元素的數據類型相同,而結構體中的各個元素的數據類型可以不相同
結構體的定義:
C語言結構體類型的定義模板大概為:
struct 類型名{ 成員表列} 變量;
在成員表列中可以是幾種基本數據類型,也可以是結構體類型。
struct 類型名{} 變量;后的分號不能漏
下面給出定義結構體類型的幾種方法
1. 先定義結構體類型,再定義結構體變量。
struct student{ char no[20]; //學號 char name[20]; //姓名 char sex[5]; //性別 int age; //年齡}; struct student stu1,stu2;//此時stu1,stu2為student結構體變量
2. 定義結構體類型的同時定義結構體變量。
struct student{ char no[20]; //學號 char name[20]; //姓名 char sex[5]; //性別 int age; //年齡} stu1,stu2;
此時還可以繼續定義student結構體變量如:
struct student stu3;
3.直接定義結構體變量。
struct{ char no[20]; //學號 char name[20]; //姓名 char sex[5]; //性別 int age; //年齡} stu1,stu2;
一般不會使用第三種定義方法,因為直接定義結構體變量stu1,stu2后就不能再繼續定義該類型的變量。
注意:
在C語言中使用struct定義結構體類型后定義結構體變量時struct不能省略,在C++中允許省略struct。
在c中:
struct student{...};struct student stu1; //struct不可省略
在c++中:
struct student{...};student stu1; //struct可省略
在C中定義結構體類型后每次定義變量時都要使用struct,如果嫌麻煩,我們可以這樣:
typedef struct student{...}STUDENT;STUDENT stu1;
使用typedef給struct student取一個"別名"STUDENT
在某些情況下還可以使用#define來實現更簡化的結構體定義與變量的定義,但可能會犧牲部分可讀性。
#define STUDENT struct student;STUDENT{...};STUDENT stu1;
typedef和#define用法不同,甚至可以結合起來靈活使用,使用時一定要注意兩者的不同之處。
總結
以上所述是小編給大家介紹的C語言結構體定義的方法匯總,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對VEVB武林網網站的支持!
新聞熱點
疑難解答