C語言中typedef的用法

2021-08-11 10:55:42 字數 1906 閱讀 3423

本文是參考譚浩強的《c程式設計》第二版一書所寫,總感覺有些重點的地方書中沒有提出來,等本人遇到其他重要用法的時候再來補充,或者大家幫我提出來,以便共同學習。

1、用typedef宣告新的型別名來代替已有的型別名

[cpp] view plain

copy

typedefintinteger;  

typedeffloatreal;  

這樣以下兩行**就可以等價替換了

[cpp] view plain

copy

inti,j;floata,b;  

integer i,j;real a,b;  

2、用typedef宣告乙個結構體

[cpp] view plain

copy

typedefstruct

date;  

宣告新型別名date,它代表上面指定的乙個結構體型別,這時就可以用date定義變數。

[cpp] view plain

copy

date birthday  

date *p  

其中birthday是乙個結構體,具體內容同上date結構體。

下面舉個例子,是在stm32微控制器的流水燈程式中用到的乙個結構體。

[cpp] view plain

copy

typedefstruct

gpio_inittypedef;  

gpio_inittypedef gpio_initstructure;  

這裡結構體又巢狀了乙個2個結構體,gpiospeed_typedef、gpiomode_typedef,他們有著跟本結構體相同的定義方式,我們來看一下:

[cpp] view plain

copy

typedefenum

gpiospeed_typedef;  

[cpp] view plain

copy

typedefenum

gpiomode_typedef;  

上面我們用gpio_inittypedef gpio_initstructure來定義了乙個gpio_initstructure結構體,他的元素跟gpio_inittypedef一樣,我們可以用下面的語句方式來對結構體進行填充

[cpp] view plain

copy

gpio_initstructure.gpio_pin = ds1_pin|ds2_pin|ds3_pin|ds4_pin;   

gpio_initstructure.gpio_mode = gpio_mode_out_pp;  

gpio_initstructure.gpio_speed = gpio_speed_50mhz;  

3、用typedef宣告陣列

如定義陣列,原來用如下形式:

[cpp] view plain

copy

inta[10],b[10],c[10],d[10];  

由於都是一維陣列,大小也相同,可以先將此陣列型別宣告為乙個名字:然後用arr區定義陣列變數:

[cpp] view plain

copy

typedefintarr[10];  

arr a,b,c,d;  

C語言中typedef用法

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

c語言中typedef的用法

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

C語言中typedef用法詳解

在c語言中,經常有如下的用法 typedef struct tag mytype,myptr 一旦通過如上定以後,就可以用mytype來定義struct tag結構了。以前我使用typedef的時候,是按照其字面意思理解的,所以進入了乙個誤區。比如說我想定義myint為int型別,我用的 如下 ty...