typedef 簡介:
是 GNU C(GNU 編譯器集合中的 C 語言編譯器)提供的一種特性,它允許程序員為現有的數據類型定義一個新的名字。這使得代碼更加清晰和易于理解。typedef 可以用來獲取變量的類型或者表達式的類型,然后為這個類型定義一個新的類型名。
例如,如果有一個復雜的數據類型,如結構體,程序員可以使用 typedef 來簡化這個類型的名稱:
typedef struct { int x; //聲明結構體成員x int y; //聲明結構體成員y }Point; //聲明一個結構體 Point _intStruct;//定義一個結構體_intStruct int main() { _intStruct.x = 9; //將9賦值給結構成員x _intStruct.y = 10; //將10賦值給結構成員y return 0; }
在這個例子中,Point 現在是一個新定義的類型名,代表了一個包含兩個整數 x 和 y 的結構體。之后在代碼中就可以使用 Point 來代替原來的復雜類型定義。
2.在 C 語言中,typedef 關鍵字用于為類型創建一個新的名字,這使得代碼更加清晰和易于維護。以下是 typedef 的一些常見用法:
提高代碼可讀性:為類型定義一個更具描述性的名字。
#include // 使用typedef提高可讀性 typedef unsigned long ulong; int main() { ulong value = 1234567890; printf("Value: %lun", value); return 0; }
類型封裝:在庫或API中隱藏實現細節。
#include // 封裝類型 typedef struct { int *array; size_t size; } IntArray; IntArray createIntArray(size_t size) { IntArray arr; arr.array = (int *)malloc(size * sizeof(int)); arr.size = size; return arr; } void freeIntArray(IntArray arr) { free(arr.array); } int main() { IntArray myArray = createIntArray(10); for (size_t i = 0; i < myArray.size; i++) { myArray.array[i] = i; } for (size_t i = 0; i < myArray.size; i++) { printf("%d ", myArray.array[i]); } printf("n"); freeIntArray(myArray); return 0; }
類型封裝:為函數指針定義別名
#include // 定義函數類型 typedef int (*CompareFunc)(const void *, const void *); // 比較函數 int compareInts(const void *a, const void *b) { int arg1 = *(const int *)a; int arg2 = *(const int *)b; return (arg1 > arg2) - (arg1 < arg2); } int main() { int numbers[] = { 5, 3, 9, 1, 6 }; int n = sizeof(numbers) / sizeof(numbers[0]); qsort(numbers, n, sizeof(int), compareInts); for (int i = 0; i < n; i++) { printf("%d ", numbers[i]); } printf("n"); return 0; }
類型封裝:為數組類型定義別名
#include // 定義數組類型 typedef int IntArray[10]; int main() { IntArray arr = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }; for (int i = 0; i < 10; i++) { printf("%d ", arr[i]); } printf("n"); return 0; } 審核編輯 黃宇
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。
舉報投訴
-
C語言
+關注
關注
180文章
7614瀏覽量
137433 -
typedef
+關注
關注
0文章
26瀏覽量
9558
發布評論請先 登錄
相關推薦
typedef和struct有啥區別
在C語言中, typedef 和 struct 是兩個非常重要的關鍵字,它們在定義數據結構時扮演著關鍵的角色。然而,它們之間有一些明顯的區別
typedef struct和直接struct的區別
在C語言中, typedef 和 struct 是兩種不同的關鍵字,它們在定義和使用上有著明顯的區別。 typedef struct 和直接
鴻蒙原生應用元服務開發-倉頡基本概念標識符
在倉頡編程語言中,開發者可以給一些程序元素命名,這些名字也被稱為“標識符”,標識符分為普通標識符和原始標識符兩類,它們分別遵從不同的命名規則。
普通標識符不能和倉頡關鍵字相同,可以取自以下兩類字符
發表于 08-06 17:37
inline關鍵字被優化導致此類函數被布局在flash內,怎么處理?
問題解決。
但是,希望樂鑫官方把idf內源碼中的inline關鍵詞都替換為__attribute((always_inline)),因為inline關鍵字不可靠!
期待下次idf版本更新能解決此bug,自己修改idf源碼真的是權宜之計、臨時之策。
發表于 06-21 12:03
C語言中的typedef的應用
C 語言提供了 typedef 關鍵字,您可以使用它來為類型取一個新的名字。下面的實例為單字節數字定義了一個術語 BYTE。
發表于 03-06 11:34
?426次閱讀
嵌入式C語言面試大挑戰
在C++中static關鍵字除了具有C中的作用還有在類中的使用在類中,static可以用來修飾靜態數據成員和靜態成員方法靜態數據成員
發表于 03-05 14:18
?380次閱讀
簡單總結一下嵌入式C++中常見的錯誤形式
對于 C++ 類,一些關鍵字只要寫在 .h 中就好,cpp 中就不用再加上了,比如 virtual、static 等關鍵字,如果在 cpp 中多寫,編譯器會報錯。
vb語言和c++語言的區別
Microsoft開發的一種面向對象的事件驅動編程語言。它的設計目標是簡化編程過程,讓初學者也能快速上手。與之相比,C++語言是一種通用的、面向對象的編程語言,其設計目標是提供高性能的
評論