jasmine214--love

          只有當你的內(nèi)心總是充滿快樂、美好的愿望和寧靜時,你才能擁有強壯的體魄和明朗、快樂或者寧靜的面容。
          posts - 731, comments - 60, trackbacks - 0, articles - 0

          typedef 類型重命名 與#define 宏定義

          Posted on 2010-11-29 13:59 幻海藍夢 閱讀(1277) 評論(0)  編輯  收藏 所屬分類: C語言學習
          在現(xiàn)實生活中,信息的概念可能是長度,數(shù)量和面積等。在C語言中,信息被抽象為int、float和double等基本數(shù)據(jù)類型。從基本數(shù)據(jù)類型名稱上, 不能夠看出其所代表的物理屬性,并且int、float和double為系統(tǒng)關鍵字,不可以修改。為了解決用戶自定義數(shù)據(jù)類型名稱的需求,C語言中引入類 型重定義語句typedef,可以為數(shù)據(jù)類型定義新的類型名稱,從而豐富數(shù)據(jù)類型所包含的屬性信息。
          typedef的語法描述
          typedef 類型名稱 類型標識符;
          typedef為系統(tǒng)保留字,“類型名稱”為已知數(shù)據(jù)類型名稱,包括基本數(shù)據(jù)類型和用戶自定義數(shù)據(jù)類型,“類型標識符” 為新的類型名稱。例如:
          typedef double LENGTH;
          typedef unsigned int COUNT;
          定 義新的類型名稱之后,可像基本數(shù)據(jù)類型那樣定義變量。例如:
          typedef unsigned int COUNT;
          unsigned int b;
          COUNT c;
          typedef 的主要應用有如下的幾種形式:
          1) 為基本數(shù)據(jù)類型定義新的類型名。例如:
          typedef unsigned int COUNT;
          typedef double AREA;
          此種應用的主要目的,首先是豐富數(shù)據(jù)類型中包含的屬 性信息,其次是為了系統(tǒng)移植的需要,稍后詳細描述。
          2) 為自定義數(shù)據(jù)類型(結構體、公用體和枚舉類型)定義簡潔的類型名稱。例如:
          struct Point
          {
          double x;
          double y;
          double z;
          };
          struct Point oPoint1={100,100,0};
          struct Point oPoint2;
          其中結構體struct Point為新的數(shù)據(jù)類型,在定義變量的時候均要有保留字struct,而不能像int和double那樣直接使用Point來定義變量。如果經(jīng)過如下的 修改,
          typedef struct tagPoint
          {
          double x;
          double y;
          double z;
          } Point;
          定義變量的方法可以簡化為
          Point oPoint;
          由于定義結構體類型有多種形式,因此可以修改 如下:
          typedef struct
          {
          double x;
          double y;
          double z;
          } Point;
          3) 為數(shù)組定義簡潔的類型名稱。例如,定義三個長度為5的整型數(shù)組,
          int a[10],b[10],c[10],d[10];
          在C語言中,可以將長度為10的整型數(shù)組看作為一個新的數(shù)據(jù)類型,再利用typedef為其重 定義一個新的名稱,可以更加簡潔形式定義此種類型的變量,具體的處理方式如下:
          typedef int INT_ARRAY_10[10];
          typedef int INT_ARRAY_20[20];
          INT_ARRAY_10 a,b,c,d;
          INT_ARRAY_20 e;
          其中 INT_ARRAY_10和INT_ARRAY_20為新的類型名,10 和20 為數(shù)組的長度。a,b,c,d均是長度為10的整型數(shù)組,e是長度為20的整型數(shù)組。
          4) 為指針定義簡潔的名稱。首先為數(shù)據(jù)指針定義新的名稱,例如
          typedef char * STRING;
          STRING csName={“Jhon”};
          其次,可以為函數(shù)指針定義新的名稱,例如
          typedef int (*MyFUN)(int a,int b);
          其中MyFUN代表 int *XFunction(int a,intb)類型指針的新名稱。例如
          typedef int (*MyFUN)(int a,int b);
          int Max(int a,int b);
          MyFUN *pMyFun;
          pMyFun= Max;
          在使用typedef時,應當注意如下的問題:
          1) typedef的目的是為已知數(shù)據(jù)類型增加一個新的名稱。因此并沒有引入新的數(shù)據(jù)類型。
          2) typedef 只適于類型名稱定義,不適合變量的定義。
          3) typedef 與#define具有相似的之處,但是實質不同。
          提示 #define AREA double 與 typedef double AREA 可以達到相同的效果。但是其實質不同, #define為預編譯處理命令,主要定義常量,此常量可以為任何的字符及其組合,在編譯之前,將此常量出現(xiàn)的所有位置,用其代表的字符或字符組合無條件 的替換,然后進行編譯。typedef是為已知數(shù)據(jù)類型增加一個新名稱,其原理與使用int double等保留字一致。
          原文: http://blog.chinaunix.net/u2/75045/showart_1120891.html
          主站蜘蛛池模板: 松滋市| 黎平县| 昌黎县| 马鞍山市| 和顺县| 邛崃市| 洞头县| 南安市| 肥东县| 交城县| 罗源县| 长子县| 东山县| 永安市| 封丘县| 桦南县| 尤溪县| 沙河市| 安多县| 长沙市| 台安县| 祥云县| 英德市| 冀州市| 来宾市| 香河县| 石台县| 什邡市| 南涧| 诸城市| 噶尔县| 西盟| 阿鲁科尔沁旗| 江华| 廊坊市| 平泉县| 栾城县| 环江| 正宁县| 金昌市| 且末县|