程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> typedef說明

typedef說明

編輯:關於C語言

1.struct Student

{

intnum;

charsex;

charname[50];

};

在C中,要定義一個Student類型的變量需要使用方式struct Student st;

在C++中,要定義一個Student類型的變量只需要Student st;

為方便,可使用typedef。如下:

typedef struct tagSTUDENT

{

int num;

char sex;

char name[50];

}STUDENT;

這樣,即使是在C中,要定義一個tagSTUDENT類型的變量也只需要使用STUDENT st;

2.同時聲明指針型的多個變量時

char* pa, pb;//實際pa為char*類型,即指向字符變量的指針;而pb為char類型,即字符型變量

使用typedef可解決此問題。

typedef char* PCHAR;

PCHAR pa, pb;//聲明了兩個char* 變量

對結構體也是一樣的。

typedef struct tagSTUDENT

{

int num;

char sex;

char name[50];

}* PSTUDENT, STUDENT;//實際PSTUDENT為struct tagSTUDENT*類型,STUDENT為structtagSTUDENT類型

3.用typedef來定義與平台無關的類型。

比如定義一個叫 REAL 的浮點類型,在目標平台一上,讓它表示最高精度的類型為:

typedef long double REAL;

在不支持 long double 的平台二上,改為:

typedef double REAL;

在連 double 都不支持的平台三上,改為:

typedef float REAL;

也就是說,當跨平台時,只要改下 typedef 本身就行,不用對其他源碼做任何修改。

標准庫就廣泛使用了這個技巧,比如size_t。另外,因為typedef是定義了一種類型的新別名,不是簡單的字符串替換,所以它比宏來得穩健。

4. typedef char* PCHAR1;

#define PCHAR2 char*;

PCHAR1 pa, pb;//pa,pb均為char*類型

PCHAR2 pa, pb;//等價於char* pa, pb。相當於定義了一個char*和一個char


參考

[1] http://www.cnblogs.com/csyisong/archive/2009/01/09/1372363.html



  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved