C語言中文網 目錄

typedef和define區別,C語言typedef和define的區別詳解

typedef 是用來定義一種類型的新別名的,它不同于宏(#define),不是簡單的字符串替換。它的新名字具有一定的封裝性,所以新命名的標識符具有更易定義變量的功能,它是語言編譯過程的一部分,但它并不實際分配內存空間。

而 #define 只是簡單的字符串替換(原地擴展),它本身并不在編譯過程中進行,而是在這之前(預處理過程)就已經完成了。因此,它不會做正確性檢查,不管含義是否正確它照樣會帶入,只有在編譯已被展開的源程序時才會發現可能的錯誤并報錯。

接下來看下面的示例代碼:

typedef char * PCHAR1;
#define PCHAR2 char *……
/* c1、c2 都為char *,typedef為char *引入了一個新的別名*/
PCHAR1 c1, c2;
/*相當于char * c3, c4;c3是char *,而c4是char      */
PCHAR2 c3, c4;

在定義上述的變量時,c1、c2 與 c3 按照預期都被定義成 char* 類型。值得注意的是,c4 卻被定義成 char 類型,而不是我們所預期的 char*。其根本原因就在于 #define 只是簡單的字符串替換,而 typedef 則是為一個類型引入一個新的別名。

精美而實用的網站,提供C語言C++STLLinuxShellJavaGo語言等教程,以及socketGCCviSwing設計模式JSP等專題。

Copyright ?2011-2018 biancheng.net, 陜ICP備15000209號

底部Logo