91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

怎么使用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

新密市| 城口县| 屏南县| 九江市| 清徐县| 安庆市| 介休市| 安龙县| 法库县| 定结县| 盐亭县| 石景山区| 云龙县| 游戏| 团风县| 沧源| 交城县| 吉林市| 东乡县| 格尔木市| 九龙城区| 北安市| 克什克腾旗| 江油市| 堆龙德庆县| 南木林县| 清涧县| 安顺市| 万盛区| 汨罗市| 瑞昌市| 通道| 资中县| 浦城县| 高邑县| 靖远县| 巴里| 遵义市| 东海县| 阿克苏市| 江达县|