typedef和巨集定義的區別

2021-06-14 00:09:58 字數 1026 閱讀 8163

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 巨集的好處 定義 或字串 方法 ...