1. <track id="ob6no"><strike id="ob6no"><tt id="ob6no"></tt></strike></track>

      <track id="ob6no"></track>

      當前位置:首頁 > 嵌入式培訓 > 嵌入式學習 > 講師博文 > typedef和#define的用法與區別

      typedef和#define的用法與區別 時間:2019-05-23      來源:華清遠見

      一、typedef的用法

      在C/C++語言中,typedef常用來定義一個標識符及關鍵字的別名,它是語言編譯過程的一部分,但它并不實際分配內存空間,實例像:typedef    int       INT;

      typedef    int       ARRAY[10];

      typedef    (int*)         pINT;

      typedef可以增強程序的可讀性,以及標識符的靈活性。

      二、#define的用法

      #define為一宏定義語句,通常用它來定義常量(包括無參量與帶參量),以及用來實現那些“表面似和善、背后一長串”的宏,它本身并不在編譯過程中進行,而是在這之前(預處理過程)就已經完成了,它的實例像:#define   INT        int

      #define   TRUE         1

      #define   Add(a,b)     ((a)+(b));

      #define   Loop_10    for (int i=0; i<10; i++)

      三、typedef與#define的區別

      (1)#define是C語言中定義的語法,是預處理指令,在預處理時進行簡單而機械的字符串替換,不作正確性檢查,只有在編譯已被展開的源程序時才會發現可能的錯誤并報錯。

      typedef是關鍵字,在編譯時處理,有類型檢查功能。它在自己的作用域內給一個已經存在的類型一個別名,但不能在一個函數定義里面使用typedef。用typedef定義數組、指針、結構體等類型會帶來很大的方便,不僅使程序書寫簡單,也使意義明確,增強可讀性。

      (2)typedef用來定義類型的別名,起到類型易于記憶的功能。另一個功能是定義機器無關的類型。如定義一個REAL的浮點類型,在目標機器上它可以獲得最高的精度:typedef long double REAL, 在不支持long double的機器上,看起來是這樣的,typedef double REAL,在不支持double的機器上,是這樣的,typedef float REAL#define不只是可以為類型取別名,還可以定義常量、變量、編譯開關等。

      (3)#define沒有作用域的限制,只要是之前預定義過的宏,在以后的程序中都可以使用,而typedef有自己的作用域。

      (4)

      #define INTPTR1 int*

      typedef int* INTPTR2;

      INTPTR1 p1, p2;

      INTPTR2 p3, p4;

      含義分別為,聲明一個指針變量p1和一個整型變量p2聲明兩個指針變量p3、p4。

      #define INTPTR1 int*;

      typedef int* INTPTR2;

      int a = 1;

      int b = 2;

      int c = 3;

      const INTPTR1 p1 = &a;

      const INTPTR2 p2 = &b;

      INTPTR2 const p3 = &c;

      上述代碼中,const INTPTR1 p1是一個常量指針,即不可以通過p1去修改p1指向的內容,但是p1可以指向其他內容。

      const INTPTR2 p2是一個指針常量,不可使p2再指向其他內容。因為INTPTR2表示一個指針類型,因此用const限定,表示封鎖了這個指針類型。

      INTPTR2 const p3是一個指針常量。

      上一篇:軟件工程就業前景

      下一篇:C語言scanf函數用法

      熱點文章推薦
      華清學員就業榜單
      高薪學員經驗分享
      熱點新聞推薦
      前臺專線:010-82525158 企業培訓洽談專線:010-82525379 院校合作洽談專線:010-82525379 Copyright © 2004-2018 北京華清遠見科技發展有限公司 版權所有 ,京ICP備16055225號,京公海網安備11010802025203號
      操你啦,操你啦视频,操你啦影院,操你啦网站