淺談typedef與define

wzm10455發表於2013-04-15

今天看了一下書,感覺typedef確實不錯,相比define,不過實際上是各有千秋的。

現在就來看看兩者各自的優缺點吧。

一:typedef與define

(1)define是預處理指令,在編譯預處理時進行簡單的替換,不做正確性的建和擦,不管含義是否正確照樣進行替換,只有在編譯已被展開的源程式時才會發現可能的錯誤並出錯。

(2)typedef作用時宣告一個新的型別名代替已有的型別名,是在編譯時處理的。它在自己的作用域內給一個已經存在的型別一個別名,他是語言編譯過程的一部分,並不實際分配記憶體空間



二:static:

在c語言中,它有三個主要的作用:

在一個函式體中,一個被宣告為靜態的變數在這一函式被呼叫過程中維持其值不變。

在模組內(在函式體外),一個被宣告為靜態的變數可以被模組內所用函式訪問,但不能被模組外其他函式訪問。它是一個本地的全域性變數

在模組內,一個被宣告的靜態的函式只能被這一模組內的其他函式呼叫,那就是,這個函式被限制在宣告它的模組的本地範圍中使用

總結一下,就是它起到限制變數的作用域和設定變數的儲存域的作用。


三:const


const意味著只讀:

const int s;    int const a;這兩個作用是一樣的。

const int *a;a 是一個指標,這個指標指向常整數型,指標可變,但是整形數不可變。

int * const a;a是一個指向整數型的常指標,也就是指標不可變,而整數是可以變的。

合理使用const可以很自然地保護那些不希望被改變的引數,減少debug

而且將變數宣告為常量就是為了告訴使用者這個引數的應用目的

能夠產生更加緊湊的程式碼