# C語言結構體
## 一.結構體基本知識點:
### 1.結構體的定義:
在C語言中,結構體屬于構造數據類型,它由若干成員組成,成員的類型既可以是基本數據類型,也可以是構造數據類型,而且可以互不相同。
結構體類型定義的一般格式如下:
```
struct 結構體類型名
{
類型1 成員名1;
類型2 成員名2;//這里的類型可以是int char float 等數據類型
...
類型n 成員名n;
};//注意分號,結構體本身也是一條語句,分號不能省略
```
### 2.結構體中成員定義:
其中,struct是定義結構體類型的關鍵字;結構體類型名必須是合法的C標識符,與其前面的struct一起共同構成結構體類型名;花括號內的內容是結構體類型所包括的結構體成員,也稱為結構體成員。
舉個例子,直接上代碼:
```
struct student
{
//定義學生結構體
int num;//學號
char name[10];//姓名
int English,math;//成績
};
```
注意事項:1)結構體類型定義的末尾必須有分號;
2)成員類型可以是除本身所屬結構體類型外的任何已有數據類型;
3)在同一作用域內,結構體類型名不能與其他變量名或結構體類型名重名;
4)同一個結構體各成員不能重名,但允許成員名與不在結構體中的變量名,函數名相同;
5)結構體類型的作用域與普通變量的作用域相同:在函數內定義,則僅在函數內部起作用;在函數外定義,則有全局作用;
### 3.結構體嵌套結構體:
我們知道,一個較復雜的實體往往由多個成員構成,每個成員可以是C語言的基本數據類型,也可以是構造類型,當結構成員的數據類型又是結構類型時,就形成了結構類型的嵌套。
直接上代碼
```
struct date
{
int year,month,day;
};
struct student
{
//定義學生結構體
int num;//學號
char name[10];//姓名
struct date birthday;//出生日期
int English,math;//成績
};
```
注意:當要嵌套定義結構體的時候,必須先定義成員的結構,比如上面的代碼,在student里定義birthday的時候,要先定義這個birthday,才可以進行嵌套。
### 4.定義結構體變量的三種常用方式:
```
#include<stdio.h>
struct student
{
int num;
char name[10];
int English, math;
};
int main()
{
struct student s1;
struct student s2;
system("pause");
return 0;
}
```
C語言規定,變量必須先定義后使用,主函數語句struct student s1,s2;就是結構體變量定義語句,定義了兩個結構體變量s1和s2,其數據類型是struct student。
在C語言中定義結構體變量有三種方式
1) .單獨定義
單獨定義是指先定義一個結構體類型,再定義這種結構體類型的變量。
引入部分的代碼便是單獨定義。
注意:關鍵字struct和結構名student必須聯合使用,它們合起來表示一個數據類型名;
2) .混合定義
混合定義是指在定義結構體時定義結構體變量。
例如:
```
struct student
{
//定義學生結構體
int num;//學號
char name[10];//姓名
int English,math;//成績
}S1,S2;//混合定義
```
3). 無類型名定義
無類型名定義是指在定義結構體變量時省略結構體名稱。
例如:
```
struct
{
//定義學生結構體
int num;//學號
char name[10];//姓名
int English,math;//成績
}S1,S2;//定義結構體變量S1,S2
```
注意:無類型名方式只定義結構體變量,不定義結構體類型,若需要定義其他結構體變量,必須把定義過程重新寫一遍。結構體變量的初始化是指在定義結構體變量時對其賦初值。
如:
```
struct student S1={101,”Li”,100,90};
```
- 空白目錄
- 第一章 c語言簡介
- 1 通俗地理解什么是編程語言
- 2 C語言究竟是一門怎樣的語言
- 第二章 算法簡介&基本語法
- 1 算法簡介
- 2 C 程序結構
- 3 C 基本語法
- 第三章 數據類型
- 1 數據類型
- 2 變量
- 3 常量
- 第四章 運算符
- 1 算術運算符
- 2 關系運算符
- 3 邏輯運算符
- 4 位運算符
- 5 賦值運算符
- 6 雜項運算符(其他運算符)
- 7 c語言中的運算符優先級
- 第五章 控制流
- 1 判斷語句
- 2 switch語句
- 3 循環語句
- 4 流程控制相關案例
- 第六章 指針
- 1 c語言指針概述
- 2 指針的算術運算
- 3 指針數組
- 4 指向指針的指針
- 5 傳遞指針給函數
- 6 從函數返回指針
- 第七章 函數
- 1 函數的語法
- 2 作用域規則
- 3 形參與實參
- 第八章 數組
- 1 C語言中的數組
- 2 多維數組
- 3 傳遞數組給函數
- 4 從函數返回數組
- 第九章 指針
- 1 分鐘徹底理解C語言指針的概念
- 2 C語言指針變量的定義和使用
- 3 C語言指針變量的運算(加法、減法和比較運算)
- 4 C語言數組指針(指向數組的指針)
- 5 C語言字符串指針(指向字符串的指針)
- 第十章 結構體
- 第十一章 練習
- 第十二章 文件操作
- 第十三章 文件操作2