C語言整理筆記
阿新 • • 發佈:2018-12-10
- 巨集常量與const常量的區別:
- 指標與陣列的區別:
- ++i和i++的區別:
- 巨集常量與const常量的區別:
巨集常量,如 #define MAX_NUM 65536 本質為字面量 ,沒有資料型別。不佔記憶體。進行文字替換。接續符 \ 。巨集常量沒有作用域。
const定義的常量,如 const int a本質為變數,是有資料型別的;有const常量後會佔用系統記憶體,開發環境會對const常量進行除錯。
- 指標與陣列的區別:
指標的本質:儲存地址值
指標在宣告時,*表示該變數為指標變數。指標在使用是,*表示取該指標所指向的記憶體空間的值
p<->&i *p<->i
int a;
int * i;
i=&a;
指標變數的值,指的是 i,在這裡是a的地址,型別為int *
指標地址的值,指的是i的地址值,寫作&i,代表記憶體,型別為int **
指標指向物件的值 ,指的是指標i所指記憶體儲存的值,寫作*i,在這裡是變數a的值,型別為int
陣列名可以看做常量指標使用
陣列名是陣列首元素的地址
陣列的地址和陣列首元素的地址是相同的,但意義不一樣。
a[n] <=>*(a+n) <==>*(n+a) <==> n[a]
指標可以當做陣列名使用
int a[5]={0}; int * p=a;
陣列作為函式引數時,編譯器編譯成指標,退化為指標
void func(int a[]) ==>void func(int *a) ==>void func(int*a,int a_size)
- ++i和i++的區別:
++i 是先把i加1再取i的值;i++是先取i的值,再加1