typedef與 define的區別是什麼?

2021-08-08 21:11:19 字數 1019 閱讀 9540

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兩者...