typedef是為原有型別宣告乙個新的名字,
「typedef int* pint_typ 」
就是宣告了乙個新的資料型別,資料型別名為
pint_typ
,其功能與int *
是完全一樣的,也就是說,
pint_typ
與int *
本質上完全相等(在程式中遇到
pint_typ
不是簡單地替換)。
而「#define pint_def int*」
是簡單的巨集定義,在預處理階段就已經將
pint_def
替換為int *
了,它與int *
不等價(只是表面的特徵相同)。
const修飾的是什麼?
知道typedef與#define的區別以後我們來分析,以上三條語句中const分別修飾誰:由預處理檔案可知:
const
int * a;
const pint_def a; <==> const
int * b;
const pint_typ a; <==> const pint_typ c;
對於#define巨集定義,其const修飾的就是指標指向的數值(*b),與cosnt int * a;
是一樣的(修飾*a)。而typedef其const修飾的是指標,因為pint_typ被看做是乙個整體,而不是int
與*
兩部分。所以cosnt修飾的是c,而不是*c,因為在const pint_typ c
這條語句中,根部就不存在*
這個字元。
再乙個例子加深印象:
typedef與 define 的區別
一 typedef的用法 typedef常用來定義乙個識別符號及關鍵字的別名,它是語言編譯過程的一部分,但它並不實際分配記憶體空間,例項像 typedef int int typedef int array 10 typedef int pint typedef可以增強程式的可讀性,以及識別符號的靈...
typedef與 define 的區別
typedef與 define 的區別 一 typedef的用法 typedef常用來定義乙個識別符號及關鍵字的別名,它是語言編譯過程的一部分,但它並不實際分配記憶體空間,例項像 typedef int int typedef int array 10 typedef int pint typede...
typedef與 define的區別
typedef與 define的區別 從以上的概念便也能基本清楚,typedef只是為了增加可讀性而為識別符號另起的新名稱 僅僅只是個別名 而 define 原本在c中是為了定義常量,到了c const enum inline的出現使它也漸漸成為了起別名的工具。有時很容易搞不清楚與typedef兩者...