數據類型分爲簡單數據類型和複雜數據類型函數
數據類型可理解爲建立變量的模具;是固定內存大小的別名;指針
數據類型的做用:編譯器預算對象(變量)分配的內存空間大小;對象
求數據類型的大小——sizeof()是操做符,不是函數;sizeof()測量的實體大小在編譯期就已經肯定了。內存
數據類型能夠取別名——typedef原型
void的字面意思是「無類型」,void *則爲「無類型的指針」,void *能夠指向任何類型的數據;編譯器
用法1:數據類型的封裝it
int InitHardEnv(void **handle);編譯
內存操做函數memcpy和memset的函數原型分別爲:變量
void *memcpy(void *dest, const void *scr, size_t len);數據類型
void *memset(void *buffer, int c, size_t num);
用法2:void修飾函數的返回值和參數,僅表示無
若是函數沒有返回值,那麼能夠將其聲明爲void類型;
若是函數沒有參數,能夠將其參數聲明爲void;
void指針的意義
C語言規定只有相同類型的指針才能夠相互賦值;
void *指針做爲左值用於「接收」任意類型的指針;
void *指針做爲右值賦值給其餘指針時需強制類型轉換;
int *p1 = NULL;
char *p2 = (char *) malloc(sizeof(char) * 20);
不存在void類型的變量
C語言沒有定義void到底是多大內存的別名
變量
既能讀又能寫的內存對象;
(一段連續)內存空間的別名
程序經過變量來申請和命名內存空間;
經過變量名訪問內存空間;
修改變量的方法
直接修改;
間接修改;拿到內存編號來修改內存——指針;
內存空間能夠取別名——引用