亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么使用C語言中的typedef

發布時間:2021-11-11 14:01:40 來源:億速云 閱讀:210 作者:iii 欄目:開發技術

本篇內容介紹了“怎么使用C語言中的typedef”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!

在單片機和操作系統中 typedef 會經常用到,它可以為某一個類型自定義名稱。和#define比較類似。但是又有不同的地方。

  • typedef 創建的符號只能用于數據類型,不能用于值。而#define 創建的符號可以用于值。

  • typedef 是由編譯器來解釋,而不是預處理器。

  • typedef 使用起來更加靈活。

下面使用typedef定義一個數據類型

int main()
{
	typedef unsigned char BYTE;	
	BYTE c = 10;	
	printf("%d \r\n",c);
	
	system("pause");
	return 0;
}

使用typedef將unsigned char類型重新定義為BYTE類型,然后在使用新的類型BYTE定義一個變量c。輸出結果如下:

怎么使用C語言中的typedef

此時如果使用 #define 來替換,好像也可以。

怎么使用C語言中的typedef

這里使用 #define 將unsigned char替換為 BYTE好像也正確。

下面在看一個例子。

int main()
{
	typedef char * STR;		
	STR s1,s2;	
	s1="abc";
	s2="123";		
	printf("%s %s \r\n",s1,s2);	
	system("pause");
	return 0;
}

將字符指針 char * 重新定義為STR類型,然后使用STR定義兩個指針s1和s2,這樣s1和s2都是指向字符的指針。接著給這兩個指針賦值,然后打印出來。

怎么使用C語言中的typedef

這時使用 #define 來替換 typedef 的功能。

#define STR  char *
int main()
{
	STR s1,s2;	
	s1="abc";
	s2="123";	
	printf("%s %s \r\n",s1,s2);	
	system("pause");
	return 0;
}

這時候編譯程序的時候,程序會報錯。

怎么使用C語言中的typedef

這時為什么呢?因為使用typedef的時候,是定義了一個新的數據類型。

typedef char * STR;		
STR s1,s2;	

相當于

char *s1, *s2;
s1="abc";
s2="123";	

s1和s2都是指向字符類型的指針。

如果使用 #define 的時候,系統只是簡單的替換。

#define STR  char *
STR s1,s2;	

將STR用 char * 進行替換

	char *s1,s2;	
	s1="abc";
	s2="123";	

替換后只有s1是指針,s2依然是一個char類型的變量。所以給s2賦值一個字符串的時候系統就會報錯。因此要重新定義一個數據類型的時候,要使用typedef,這個在定義結構體的時候使用的非常多。

typedef struct Date
{
	int year;
	int month;
	int day;
} DT;

使用typedef 將結構體 struct Date 重新定義為DT類型,這樣在使用DT定義變量的時候,就相當于使用了 struct Date 來定義變量。

typedef struct Date
{
	int year;
	int month;
	int day;
} DT;

DT d1 = {2021,10,1};
DT d2 = {2021,10,10};

等價于

struct Date
{
	int year;
	int month;
	int day;
};
struct Date d1 = {2021,10,1};
struct Date d2 = {2021,10,10};

這樣通過使用 typedef 來重新定義一個新的類型,使代碼寫起來更加的簡潔。這種方法在單片機的庫函數中使用的最多。

typedef struct
{
    uint16_t GPIO_Pin;          
    GPIOSpeed_TypeDef GPIO_Speed; 
    GPIOMode_TypeDef GPIO_Mode;    
}GPIO_InitTypeDef;

void LED_Init(void)
{ 
 	GPIO_InitTypeDef  GPIO_InitStructure;
 	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13;				 			//LED0-->PA8 端口配置
 	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; 		  //推挽輸出
 	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;		  //IO口速度為50MHz
 	GPIO_Init(GPIOA, &GPIO_InitStructure);					 				/PD2 輸出高 
}

通過 typedef 將結構體重定義為GPIO_InitTypeDef 類型,這樣在初始化的時候,直接使用GPIO_InitTypeDef 類型就可以定義一個關于GPIO的結構體。

在定義數據類型的時候,也會用到 typedef 重新定義一個數據類型。

怎么使用C語言中的typedef

通過tepedef 定義新的數據類型,增加了代碼的可讀性和移植性。這里說的新的數據類型不是創建了一個系統不存在的數據類型,而是給已經存在的某個類型增加了一個方便使用的標簽。而這個標簽又不同于 #define 只是簡單的符號替換。

“怎么使用C語言中的typedef”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

墨竹工卡县| 太白县| 锡林郭勒盟| 定结县| 喜德县| 图木舒克市| 威信县| 松滋市| 荆州市| 林芝县| 土默特右旗| 南投市| 丹巴县| 凤阳县| 关岭| 达州市| 阿坝| 平罗县| 萝北县| 贵州省| 泽库县| 丰台区| 玉环县| 简阳市| 桑日县| 汉川市| 贵州省| 眉山市| 平安县| 含山县| 舒兰市| 丹东市| 阿拉善盟| 石嘴山市| 剑阁县| 原阳县| 交城县| 军事| 夹江县| 肇东市| 鸡泽县|