1. 程式人生 > >C語言整理筆記

C語言整理筆記

  • 巨集常量與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