您好,登錄后才能下訂單哦!
在C或者C++中,可以通過使用typedef和define來聲明新的類型來代替已有的類型。例如:
typedef int COUNT;
#define COUNT int;
兩者的作用都是用COUNT來代表int。雖然兩者實現的功能相同,但是實際上卻又有很大的差別,要不然也不會同時存在了。下面簡單談一下兩者的區別,希望在用到時能夠正確的進行選擇,以便減少不必要的麻煩:
typedef
在C或者C++中,typedef常用來定義一個標識符及關鍵字的別名,它是語言編譯過程的一部分,但它并不實際分配內存空間。
使用方法:(1)先按照定義變量的方法寫出定義體(如int n[100];)
(2)將變量名換成新類型名(如將n->NUM);
(3) 在最前面加上typedef(如 typedef NUM[100])
(4)可以用新類型名去定義變量
在C中還可以用來聲明結構體類型:
typedef struct
{ double score;
String name;
int data;
}SCORE
這樣就完成了新類型名SCORE的聲明,它代表上面指定的結構體類型,接下來就可以用SCORE來定義變量了: SCORE FIRST;
SCORE *p; //p為指向此結構體類型數據的指針
注意:(1)typedef可以聲明各種類型名,但是不能用來定義變量。
(2)typedef只是對已經存在的類型指定一個新的類型名,而沒有創造新的類型。
(3)typedef可有利于程序的通用與移植。例如:不同的硬件平臺對int型長度定義是不同的,有 些是2字節,有些是4字節,如果將程序從一個4字節存放整型數據的計算機系統移植到以2字 節存放×××數據的系統,則需要將定義變量中所有的int類型全部換為long類型,但是如果 使用了typedef定義了int型,則只需要更改一處。
2.#define
為宏定義語句,通常用它來定義常量,它本身并不在編譯過程中進行,而是在這之前(預處理過程)就已經完成了,但也因此難以發現潛在的錯誤及其它代碼維護問題。
兩者區別:
#define是在預編譯時處理的,它只做簡單的替換。而typedef則是在編譯時候處理的,并不是只做簡單的替換。例如:
typedef int NUM[10];
并不是用NUM[10]去代替“int”,二十采用如同定義變量的方法那樣來聲明一個類型,然后用它來定義變量。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。