1. 程式人生 > >Linuxc基礎 十七

Linuxc基礎 十七

巨集
巨集函式 :用來替換函式減少執行空間
#define ADD(x,y) (x+y)
1、避免函式入棧,出棧等開銷,可以提高程式執行效率
2、多次呼叫,會使程式碼變的龐大
很小的函式可以使用巨集函式
巨集的有效範圍:從巨集定義的位置開始到檔案結束或取消巨集定義。 (#undef 取消巨集)
1、不做作用域檢測
2、不做型別檢測
條件編譯
ifdef
編譯時加-D是定義一個巨集
“#x”將巨集引數轉換成字串
##把兩個巨集連結到一起
static
1、修飾區域性變數:可以延長區域性變數的生命週期知道程式結束才會被釋放(靜態變數沒有在函式的內部)
2、修飾全域性變數:只能再本檔案使用,其他檔案不可用
3、秀實函式:只能再本檔案使用,其他檔案不可用
extern 變數宣告
Extern int g_a;//g_a這個變數可能存在其他檔案中,如果用的時候本檔案沒有找到,去其他檔案去找。
const


修飾變數:將變數變成只讀屬性 ,不能通過修飾變數名改變變數空間的值。
const只是不能通過修飾的變數改變空間的值,不代表空間的值不能改變。
Const int p1=&a;//修飾不能通過改變指向的空間的值可以理解為p1不能變。
Int *const p2=&a;//指標指向不能變,p2不能變可以通過p2改變指向空間的值。
Const *const p3=&a;//指標指向不能變,只想空間的值不能變。
const修飾的物件:將變數型別去掉和誰最近就是修飾的誰。
typedef
給型別重新命名
例如 typedef int INT32;
malloc
malloc:在堆上分配空間
標頭檔案:#include <stdlib.h>
引數:要分配空間的大小,單位為位元組
返回值:只想分配的空間的指標
Void *malloc(size t size);
free釋放堆上的空間
Void free(void *ptr);
引數:指向要釋放的空間的指標
1、分配單個變數空間
int *pa=(int *)malloc(sizeof(int)/sizeof(char));
如果分配成功指向分配的指標
如果分配失敗返回NULL
釋放完之後指標指向NULL
2、分配一維陣列
Int a[10];
Int *pa=(int *)malloc(sizeof(int)/sizeof(char)*10);
3、分配二維陣列
int a[3][4];
int (pa)[4]=(int (
)[4])malloc(sizeof(int)/sizeof(char)34);
分配不連續空間
int **p=(int **)malloc(zsieof(int *)/sizeof(char)*3);
if(NULL==p)
{
;
}
int i;
for(i=0;i<3;i++)
{
p[i]=(int *)malloc(sizeof(int)/sizeof(char)*4);
}
for(i=0;i<3;i++)
{
free(p[i]);
}
free(pa);
realloc 重新分配空間(空間拓展)要連續空間
重新分配時,使用新指標不要使用原指標
memset(buf,0,sizeof(buf));