1、C語言基本類型:字符型,整型,浮點型
2、結構體(複雜類型):自定義類型 i
3、定義變量:爲了分配空間
類型 變量名; //注:分配空間編譯器通過類型來分配
初始化:定義變量同時賦值
3.1定義結構體(自定義)的類型
struct 類型名
{
屬性1;
屬性2;
屬性3;
...
};
3.1.1無嵌套結構體:所有屬性都是基本類型
//定義人的類型:人的信息(姓名,姓別,身高)
struct people
{
//姓名:
char name[10];
//性別
char sex;
//身高
unsigned short height;
};
3.1.2嵌套結構體:屬性是一個結構體變量
struct people
{
...
struct *** 變量名;
...
};
3.2定義結構體變量:類型 變量名;
struct 類型名 變量名;
3.3引用結構元素:一定要通過結構體變量來引用屬性。
.運算符 :引用複雜類型的成員
變量名.屬性;
3.4結構體的分配空間法則:以最大字元素字節對齊 (*)
1、查找最大元素的類型
2、每個元素都分配以最大類型的最小的倍數。
3、共享空間?
注:gcc編譯器可以指定對齊方式(這不是C語言的標準)
__attribute__((packed))
3.5結構體變量之間賦值: 注:同類型之間,不同類型的結構體是不能賦值的
struct people a,b;
a=b;
- 0、指針
1、指針類型: 基本類型
2、空指針類型變量:沒有意義,只是一個指針空間,用於記錄地址(不能運算)
void* 變量;
注:由於空間指針void*不知道尺寸(類型),是不能進行+ -運算的
3、空地址:每個數據空間都有地址(地址>0),設置地址爲0的指針爲空指針(不指向任何的元素)
注:指針變量必須初始化
typedef NULL (void*)0;
(筆試和麪試)
1、作用域:能被引用的區間
1、局部變量:在函數內定義(在函數)
2、全局變量:在函數外定義(文件內)
注:引用變量,一定注意作用域
2、生命週期:分配空間到釋放
1、動態變量:auto
2、靜態變量:
3、堆區 (程序員空間):空間由用戶申請,由用戶來釋放空間。
API: 申請 malloc(size_t bytes) 釋放:free
注:bytes代表字節的數量
注:malloc/realloc返回值爲NULL,申請失敗
注:頭文件爲 stdlib.h
3.1使用步驟:
1、申請 p=malloc(size_t)
2、使用
3、釋放 free(p);
3.1.1變量空間
3.1.2數組空間:
概念:是一塊同類型且連續的存儲空間
1、內存複製:
memcpy(des,src,size); string.h