typedef用法小結

2021-06-02 19:45:30 字數 1186 閱讀 7651

typedef用於定義型別的同義詞,但實現機制和簡單的巨集轉換是不一樣的。

例如:

#include using namespace std;   

typedef int* pint;

int main()

這裡的pint pa,pb就相當於int  *pa , *pb,而不是int* pa,pb;

typedef主要用於這幾種目的:

1.隱藏特定型別的實現,強調使用型別的目的,如上面的例子,使用pint代替int*,使得**可以清晰的說明出pa和pb就是指向int的指標;

2.便於實現跨平台的可維護性強的**。如果我們在平台一上使用了定義了乙個real,這個real代表的是long double,而在平台二上,並沒有long double這種型別,這時,我們就可以修改real的typedef語句,使其表示別的該平台有的型別(例如double)。

3.方便將複雜的結構定義簡化,使其更容易理解,這個用途在函式指標中常用。例如,我們現在要宣告兩個指向引數為空,返回值也為空的函式指標pf1和pf2,則需要如下定義:

void (*pf1)();

void (*pf2)();

這種指標結構比較複雜,而且看起來很繁瑣。

我們可以使用typedef實現;

typedef void (*fcn)();

fcn pf1,pf2;

需要注意的地方:

1.typedef不同於巨集,不是簡單的字串替換,而是意義的說明,例如:

const int a = 10;

int b = 20;

// const pint pa = &a; pa無法指向常量a

const pint pb = &b; //pb可以指向普通變數

// pa = pb; pb和pa的指向都無法修改

// pb =pa;

*pb = 20; //pb指向物件的值可以修改

上面的**說明,const pint等價於 char *const ,而不是cosnt char*,因此,這個地方要十分注意。這裡的pint就是代表指向int的指標型別,有const來修飾,修飾的就是指標。

typedef用法小結

最近看scintillia的源 總看到typedef的身影,朋友也說autodesk的面試官曾說過不懂typedef很差勁。於是查了網上的資料,看了幾種比較 容易出錯的常用用法,做了一些整理。一 起別名的兩種用法 1.typedef int pint 2.typedef pint int 比如pin...

C C 基礎知識 typedef用法小結

第 一 包含四個用途 用途一 定義一種型別的別名,而不只是簡單的巨集替換。可以用作同時宣告指標型的多個物件。比如 char pa,pb 這多數不符合我們的意圖,它只宣告了乙個指向字元變數的指標,和乙個字元變數 以下則可行 typedef char pchar 一般用大寫 pchar pa,pb 可行...

常見typedef 用法

例如 typedef unsigned char uchar 描述 uchar等價於unsigned char型別定義 uchar c宣告等於unsigned char c宣告 2.陣列型別定義 例如 typedef int array 2 描述 array等價於 int 2 定義 array a宣...