歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> C語言typedef關鍵字學習

C語言typedef關鍵字學習

日期:2017/3/1 9:49:28   编辑:Linux編程

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就是一種數據類型。

關於const關鍵字的用法,可以參考下面這篇文章,http://www.linuxidc.com/Linux/2014-01/94736.htm

Copyright © Linux教程網 All Rights Reserved