posted on
2010 年 11 月 8 日
因為資料結構課程中,typedef和巨集定義的經常使用。前幾日室友問我typedef和巨集定義有什麼區別,我一時無法回答,隱約只記得typedef和定義在陣列方面和指標方面有區別。這兩天,為了解決自己的盲點,google了這個問題,做幾點總結。
define是一種智慧型替換,而typedef是告訴編譯器,為這個型別取了乙個別名,而不是像巨集一樣是一種文字替換了。
例如:使用define
1
2
#define mytype int*
mytype
a, b;
//此時出現差異,a為指向int的指標變數,而b為int變數
使用typedef:
12
typedef
int*
mytype;
mytype
a, b;
// a,b均為指向int的指標變數
由此可知,當我們在函式中,需要連續宣告多個像這種指標變數時,則應該用typedef,用typedef定義的型別能夠保證宣告中所有的變數均為同一型別。
還有在const關鍵字修飾下也不同,接上面:
12
3
4
5
6 n
=2;const
mytype
a; a=
&n;//這時就出現錯誤了,因為const修飾的是int,此時a是乙個指向常量的指標;
const
mytypeb=
n;
//此時const修飾的是int*,b是乙個常指標;
this entry was posted in
ohters and tagged
c by
wheato. bookmark the
permalink.
typedef與巨集定義區別
陷阱一 記住,typedef是定義了一種型別的新別名,不同於巨集,它不是簡單的字串替換。比如 先定義 typedef char pstr 然後 int mystrcmp const pstr,const pstr const pstr實際上相當於const char 嗎?不是的,它實際上相當於cha...
typedef和 define的定義與區別
一 typedef的用法 在c c 語言中,typedef常用來定義乙個識別符號及關鍵字的別名,它是語言編譯過程的一部分,但它並不實際分配記憶體空間,例項像 typedef int int typedef int array 10 typedef int pint typedef可以增強程式的可讀性...
const和巨集定義的區別!!!
巨集的命名規範 一般以專案字首開頭,key結尾。開頭表編譯。巨集的用法 1 定義常用字串。2 定義一段 const與巨集的區別 1 編譯時刻 巨集 預編譯 const command b 編譯階段 編譯。2 巨集不會檢查 錯誤,只是替換,但是const會編譯報錯。3 巨集的好處 定義 或字串 方法 ...