天天看點

c語言typedef程式設計,C語言typedef關鍵字學習

typedef關鍵字用來給現有資料類型建立别名。

typedef int size_t;

是以下面的兩個定義其實完全相同。

size_t size;

int size;

咦,下面這樣定義一個size_t的宏是不是也能達到一樣的效果呢?

#define size_t int

在這裡,确實define一個資料類型宏能達到同樣的目的。

但是typedef和define相比:

define隻會在預編譯階段進行簡單的替換操作;

typedef則會在編譯階段進行資料類型檢查。

是以相比于define,更推薦使用typedef來為現有資料類型建立新的類型别名。

typedef關鍵字的作用有:

1. 建立易于記憶的類型别名

typedef int size;

2. 對作業系統提供的資料類型進行封裝,提供系統無關的資料類型别名。

這樣可以寫出不依賴于作業系統的應用程式,讓應用程式在不同系統之間的移植變得更簡單了。

3. 使用typedef可以讓callback函數的原型定義變得更簡單。

如下定義了一個函數指針的原型是有兩個參數,傳回值是int類型。

typedef int (*pfunc)(int size, void* pvalue);

關于typedef和const兩個關鍵字結合使用的案例分析。

typedef char* pstr;

char str[10] = "112345";

const pstr p1 = str;

p1++;

如果代碼這樣寫,那麼在編譯階段就會報錯。

這是因為按照const的修飾規則,它修飾的是pstr這種資料類型的變量p1;

而p1是一根指針,用const修飾了就意味着這個指針不能随便亂動了,

是以編譯器才會報錯。

通過這個案例,也恰恰說明了typedef和使用define的差別:

typedef不是在預編譯階段做簡單的替換動作;

typedef定義了一個新的資料類型,對編譯器而言pstr就是一種資料類型。

推薦閱讀:

c語言typedef程式設計,C語言typedef關鍵字學習