1.預處理標識符 ‘’ # ‘’
作用:編譯前執行的處理 ,就是將頭文件中的函數聲明及函數代碼完全拷貝到當前的程序代碼中
不需要人爲再寫入。方便之處還有將自己寫的函數放在一個新建".h"文件中,來使用。
2 .<stdlib.h>的函數
alloca()
: 向棧申請內存,無需釋放malloc()
: 申請內存位於堆中,沒有初始化內存的內容,所以不能保證申請空間裏沒有內容
語法:
malloc (申請元素的個數 * 元素單位長度)
eg : int * p;
p = (int*)malloc(10*sizeof(int)); // 指針變量p,指向一個長度爲10的動態數組的首地址
malloc函數的返回類型是( void * ), 而 ( void * )是未確定類型的指針,所以根據申請空間的類型需要強制轉換指針類型,
calloc()
: 初始化申請的內容,設爲 0
語法 :
calloc (申請元素的個數,元素單位長度)
eg : int *P;
P = (int * ) calloc(10 , sizeof(int)) ;
realloc()
: 對malloc() 申請內存進行調整大小
語法 :
realloc(malloc申請空間的首地址 , 新長度)
eg : int * p;
p = (int*)malloc(10sizeof(int));
p = (int)realloc(p,20*sizeof(int));
在堆上分配內存, 擴大內存空間,堆上現存空間足夠,原首地址不變 ; 內存空間不夠,重新申請一塊空間,將當前數據拷貝過去,釋放原來空間,重新賦予了新的首地址。
注 : 使用realloc() ,重新給舊地址的指針賦值