以前學過的資料型別只能定義簡單的資料資訊,而像學生的基本資訊(比如學號,姓名,出生日期,籍貫,成績等多個資料構成)的複雜資料,就需要相關的結構體的知識。
1.結構體型別變數的定義和引用。
(1)結構體資料
結構體定義形式:例如:
struct student
char name[9];
int age;
float grade;
struct表示定義的是結構體資料型別,student表示結構體型別名。花括號內一次列舉每個成員資料的型別及其名稱。結構體的成員資料也稱為域。
注意:每個成員資料的型別可以是基本資料型別(如int float....)或者自定義資料型別,但不能重名。
不僅如此,使用上述自定義的student型別,可以定義student型別的陣列s,用於存放10位學生的資料:
struct student s[10];
2.結構體變數的使用:
struct student a=,b=a,c,*p=&a;
(定義了三個student型別變數a,b,c,以及乙個student型別的指標變數p)
在訪問結構體變數的成員可以通過成員運算子(.)來實現,使用格式為:
結構體變數名.成員名
例如:strcpy(a.name,「李四」);
a.no=200140214;
再如:strcpy(p->name,「李四」);
p->no=200140214;
(2)typedef命令使用:
struct point
float x;
float y;
struct point p;
為了簡化變數p的定義,可以使用c語言提供的型別別名定義語句typedef為結構體型別point取乙個別名point,即:
typedef struct point point;
(3)結構體型別巢狀:
即為在乙個結構體中再巢狀使用別的結構體;
(4)結構體型別陣列:
定義乙個結構體變數只能表示乙個實體的相關資訊,若要表示多個記錄則要用結構體陣列。結構體陣列是結構體和陣列結合。
結構體陣列和變數的定義形式相似:
struct student
char name;
int age;
char ***;
}stu[4];
或者:struct student
char name;
int age;
char ***;
struct student stu[4];
C語言結構體
1.1.1 結構概念 1 結構存在的意義 存在是合理的,許多事物的存在是在不斷解決問題引入的,當然有更好的方法出現時改變也是合理的。在實際問題中,一組資料往往具有不同的資料型別。例如,在學生登記表中,姓名應為字元型,學號可為整型或字元型,年齡應為整型,性別應為字元型,成績可為整型或實型。顯然不能用乙...
C語言 結構體
宣告乙個結構體型別 struct 結構體名 成員表列 定義結構體變數的方法 1 先宣告結構體型別再定義變數名。在定義了結構體變數後,系統會為之分配記憶體單元.例如 struct student student1,student2 2 在宣告型別的同時定義變數,例如 struct 結構體名 成員表列 ...
c語言 結構體
1 定義結構體 c語言允許使用者自己建立不同型別資料組成的組合型的資料結構 struct 結構體名 1 結構體的型別不是只有一種,可以根據需要設計許多種,如struct student struct worker等 2 結構體的成員可以是另一結構體的成員,注意的是引用此成員的方式 2 定義結構體變數...