C語言中typedef的用法和 define區別

2021-07-03 14:33:56 字數 1298 閱讀 5336

typedef 型別定義

typedef 是給各種資料型別定義新名字,主要是用來簡潔的表示一些複雜的資料型別,比如說指向其他物件指標之類

defined也有這個意思,但是define巨集只是進行一種簡單的替換。

普通的變數宣告方式, 比如

宣告乙個字元型變數   char c;

宣告乙個字元型指標變數為 char *cptr;

fptr被宣告為乙個返回為void形參為(int,int)型別的函式指標void (*fptr)(int, int); 

但是當我們在這兩個宣告之前加上typedef關鍵字的時候

typedef char c; 

這個時候,c就是乙個char的乙個別名,在域作用範圍之內,我們都可以用c表示char資料型別

typedef char *cptr ; 

同理 這個時候cptr就是char *型別的乙個別名,cptr就意味著是char *資料型別

typedef void (*fptr)(int, int);

這之後的作用域之類,fptr就是該型別函式指標資料型別的別名。

例如fptr p1,p2;就是宣告 p1 p2這兩個該型別函式指標變數型別。

在typedef 與defined的區別

typedef可以看場一種徹底封裝的資料型別,在這之後的資料宣告之中,新的別名就可以一種資料型別的表示,其用法和int,char幾乎一樣。

但是defined巨集就是將該相同字元文字進行乙個簡單的替換。

在用法上

1:typedef不能進行對符號型別名的拓展

比如說typedef int  num;

unsigned num i;

非法,錯去,編譯器會報錯。

但是若是

defined num int;

unsigned num i;

這個是完全沒有問題的,i就是unsigned int 資料型別 

2:在連續幾個變數的宣告中,typedef都能夠保證宣告的變數型別均為同一種型別,但是#define就無法保證

例如:typedef char *cp;

cp  p1,p2;

p1 p2都是char *型別的變數

#define cp char*;

cp  p1,p2;

在預編譯的時候cp  p1,p2;會展開成char *p1,p2;

則這個時候 p1是char *型別的變數 p2則是char 型別的變數。

C語言中typedef用法

c語言中typedef用法 1.基本解釋 typedef為c語言的關鍵字,作用是為一種資料型別定義乙個新名字。這裡的資料型別包括內部資料型別 int,char等 和自定義的資料型別 struct等 在程式設計中使用typedef目的一般有兩個,乙個是給變數乙個易記且意義明確的新名字,另乙個是簡化一些...

C語言中typedef的用法

本文是參考譚浩強的 c程式設計 第二版一書所寫,總感覺有些重點的地方書中沒有提出來,等本人遇到其他重要用法的時候再來補充,或者大家幫我提出來,以便共同學習。1 用typedef宣告新的型別名來代替已有的型別名 cpp view plain copy typedefintinteger typedef...

c語言中typedef的用法

typedef struct student linklist linklist head 以上定義了乙個新的結構體student,並將結構體起了乙個新的別名linklist 結構體中不用typedef也是可以的,定義變數時需要加上struct student struct student stru...