C語言入門學習筆記之typedef簡介

2022-09-21 21:51:14 字數 1623 閱讀 6895

在微控制器和作業系統中 typedef 會經常用到,它可以為某乙個型別自定義名稱。和#define比較類似。但是又有不同的地方。

下面使用typedef定義乙個資料型別

int main()

使用typedef將unsigned char型別重新定義為byte型別,然後在使用新的型別byte定義乙個變數c。輸出結果如下:

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

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

下面在看乙個例子。

int main()

將字元指標 char * 重新定義為str型別,然後使用str定義兩個指標s1和s2,這樣s1和s2都是指向字元的指標。接著給這兩個指標賦值,然後列印出來。

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

#define str char *

int main()

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

這時為什麼呢?因為使用typedef的時候,是定義了乙個新的資料型別。

typedef char * str;

str s1,s2;

相當於char *s1, *s2;

s1="abc";

s2="123";

s1和都是指向字元型別的指標。

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

#define str char *

str s1,s2;

將str用 char * 進行替換

char *s1,s2;

s1="abc";

s2="123";

替換後只有s1是指標,s2依然是乙個char型別的變數。所以給s2賦值乙個字串的時候系統就會報錯。因此要重新定義乙個資料型別的時候,要使用typedef,這個在定義結構體的時候使用的非常多。

typedef struct date

dt;使用typedef 將結構體 struct date 重新定義為dt型別,這樣在使用dt定義變數的時候,就相當於使用了 struct date 來定義變數。

typedef struct date

dt;dt d1 = ;

dt d2 = ;

等價於struct date

;struct date d = ;

struct date d2 = ;

www.cppcns.com

這樣通過使用 typedef 來重新定義乙個新的型別,使**寫起來更加的簡潔。這種方法在微控制器的庫函式中使用的最多。

typedef struct

gpio_inittypedef;

void led_init(void)

通過 typedef 將結構體重定義為gpio_inittypedef 型別,這樣在初始化的時候,直接使用gpio_inittypedef 型別就可以定義乙個關於gpio的結構體。

在定義資料型別的時候,也會用到 typedef 重新定義乙個資料型別。

通過tepedef 定義新的資料型別,增加了**的可讀性和移植性。這裡說的新的資料型別不是建立了乙個系統不存在的資料型別,而是給已經存在的某個型別增加了乙個方便使用的標籤。而這個標籤又不同於 #define 只是簡單的符號替換。

總結

C 語言入門學習筆記

c 語言入門學習筆記 一 c 是什麼 c 讀作 c sharp 是一種程式語言,它是為生成在 net framework 上執行的各種應用程式而設計的。c 簡單 功能強大 型別安全,而且是物件導向的。c 憑藉在許多方面的創新,在保持 c 語言風格的表現力和雅緻特徵的同時,實現了應用程式的快速開發。v...

C語言入門學習筆記(二)

任何乙個c語言程式 都必須包括以下格式 main 括號內可以不填,就不執行程式 2.任何乙個c程式都是從main函式開始.main 函式 c語言中的主函式 乙個c程式中有且僅有乙個main函式 main 函式後的圓括號不可省略 大括號裡的內容是main 函式的函式體,是計算機的執行內容.4.裡每乙個...

C語言入門筆記之迴圈結構

迴圈結構的功能是讓計算機重複地執行相同的操作 c語言中的各種迴圈結構for迴圈是比較常用的一種迴圈,一般形式是for 一般表示式 條件表示式 末尾迴圈體 執行邏輯 例子 在螢幕上列印1 2 3 4 5 99 100 include int main return 0 while 條件語句 執行邏輯 ...