C語言中typedef用法總結,看完就能像編程老手一樣熟練運用

2020-12-18 C語言知識傳播者
請看下文

C語言中typedef關鍵字應用比較常見,許多C語言初學者對它的用法不甚了解。事實上,我們可以用typedef來定義自己習慣使用的數據類型名稱,可以替代自己所熟悉的基本類型、數組類型、指針類型以及自己定義的結構體類型、共用體類型、枚舉類型等。一旦我們在程序中定義了自己的數據類型名稱,我們就可以像使用int、float和double等基本數據類型一樣來使用它。實際使用中,typedef有以下幾種主要形式。

1、 給基本數據類型定義新名字

基本數據類型的新名字定義通常有兩個方面的作用:

1) 使數據類型名稱簡潔

新類型名字定義代碼如下所示:

typedef unsigned int UINT;

新類型名UINT定義之後就可以使用它來定義變量,定義代碼如下:

UINT a,b,c;

2) 代碼中的類型與平臺無關

由於C語言代碼有較強的移植性,通過代碼移植,可以使其運行在不同的硬體平臺上,使用typedef就可以定義與平臺無關的類型。假如用戶的程序代碼用到了浮點類型,不同平臺支持的最高精度不同,這樣用戶在編程時可以用typedef直接定義一個名為REAL的浮點類型,代碼在不同平臺運行時僅需修改REAL的定義即可。

如某個平臺最高支持long double,那麼可以將REAL定義如下:

typedef long double REAL;

如果另一個平臺最高僅支持float,那麼可以將上述定義修改成如下形式:

typedef float REAL;

2、 給數組類型定義新名字

與給基本數據類型定義新名字類似,給數組類型可以定義新名字,定義形式如下:

typedef int ARR_T[50];

這裡ARR_T就是一個整型數組類型名,當用戶需要定義包含50個元素的整型數組時,可以這樣定義:

ARR_T myIntArr;

這裡myIntArr就是一個包含了50個元素的數組名。

3、 給指針類型定義新名字

對於普通的指針類型,定義類似於上述兩種情況,定義代碼如下:

typedef int * PINT;

PINT pin1, pin2;

這裡PINT是一個指向整型變量的指針類型,利用它定義了兩個指向整型變量的指針pin1和pin2。

對於複雜一點的指針類型,就更能體現出typedef的優勢。請看下面的聲明代碼示例:

int * (*s[10])(int *, char *(*)());

對於這個複雜的聲明,可以通過typedef定義一個新的簡單的別名。過程如下:在原來的聲明裡逐步用別名替換一部分複雜聲明,如此循環,把帶變量名(這裡為s)的部分留到最後替換,最終得到的就是上述聲明的最簡化版,具體定義如下:

typedef char *(*pParam)();

typedef int *(*PFUN)(int *, pParam);

PFUN s[10];

4、 給自定義數據類型定義新名字

假如用戶程序用到了許多自定義數據類型,如結構體類型、共用體類型、枚舉類型等。為了使自定義數據類型簡潔,可以在其定義的同時時使用typedef給其重新定義一個較為簡潔、直觀的名字。以結構體為例,定義代碼形式如下:

typedef struct tagNODE

{

int data;

struct tagNODE *next;

}NODE, *PNODE;

這裡在定義結構體數據類型時,利用typedef定義了兩個類型,NODE和PNODE分別為普通變量類型和指向結構的指針類型。

注意,結構體內部一定要用原結構體類型名(struct tagNODE)定義指針next,千萬不可以用PNODE或NODE*定義,這是因為此時結構體類型還沒有定義完成,不可以使用PNODE和NODE。

定義完之後,就可以使用新類型名定義變量了,簡化了定義,使用形式如下:

NODE nd1, nd2, nd3;

PNODE pnd;

nd1, nd2, nd3為普通結構體變量,pnd為指向結構體變量的指針。

關於typedef典型用法今天就總結到這,如果大家有任何疑問請留言探討。我是「C語言知識傳播者」,我會用心總結C語言知識的點點滴滴,你的關注是我持續創作的動力,請關注我,收藏本文、轉發並點讚,希望得到你們的持續關注,謝謝!

相關焦點

  • C語言switch語句用法總結
    請看下文C語言中選擇結構分為if語句和switch語句兩種,兩種語句均可以依據條件不同而選擇執行不同的語句塊,但switch語句更多地應用於多分支結構。本文將總結switch語句基本用法及使用技巧,希望能給大家提供參考。1、 switch語句基本用法C語言中,switch語句是一種多分支選擇語句,在實際應用中,要在多種情況中選擇一種情況,執行某一部分語句。
  • C語言編程規範 clean code
    但是我們制定規則的目的「為了大多數程式設計師可以得到更多的好處」, 如果在團隊運作中認為某個規則無法遵循,希望可以共同改進該規則。參考該規範之前,希望您具有相應的C語言基礎能力,而不是通過該文檔來學習C語言。
  • 淺談C語言中if語句
    通俗的理解是,前三種用法形式裡的語句塊,又是一個if語句,而且可以是前三種用法形式的任一種。C語言的C89標準指明,編譯程序必須最少支持15層嵌套;C99標準把限度提升到127層。不過雖然支持這麼多層嵌套,但實際編程應用時,為了保持程序的可讀性及簡潔程度,應儘量減少嵌套層次。
  • 如何用C語言實現面向對象編程OOP?
    如何用C語言實現面向對象編程OOP?從大學到工作至今,在嵌入式領域中一直是使用C語言,而我在學習C++的過程中,看的代碼越多,代碼量越大,越來越覺得C++對於大型軟體架構的良好可控性,和對以後程式設計師維護代碼時良好的可讀性; 個人認為:C語言中最大的成功在於它的指針,但是也是最容易出錯的,想要理解C,必須要掌握指針。雖然說,語言只是一門工具,但是這是基礎.
  • python與c語言的語法有哪些不一樣的
    在眾多程式語言之中,想必很多人都聽說過Python和C語言,在進行編程學習之前,大家都會問:python和c語言的區別有哪些?我該如何選擇?接下來我們來看看吧。2、內存管理:Python使用自動垃圾收集器進行內存管理;在C語言中,程式設計師必須自己進行內存管理。3、應用:Python是一種通用程式語言,多範式的,支持面向對象編程、程序編程以及函數編程;C是結構化程式語言,允許使用函數、選擇、迭代,主要用於硬體相關的應用程式。
  • C語言基礎(下)
    C語言的世界結構體類型什麼是結構體我們觀察現實世界的時候,可以發現很多的東西它都是由不同的部分組合起來的, stu.name); printf("%s\n", stu.gender); printf("%s\n", stu.mail); printf("%d\n", stu.age);結構體數組語法定義struct Student{char * name;}stu[5];使用上與單個結構體變量相同,在數組中需要加上在數組中的下標
  • C語言怎麼樣?今天聊聊C語言的發展史!
    此版本還看到了C語言的開始,該語言用於編寫一些命令。 此處的代碼僅是某些命令,某些庫函數和C編譯器的原始碼。c /中的文件來自 last1120c.tar.gz 磁帶,並構成了第二版Unix的有效C編譯器。
  • csdn最適合人工智慧開發的程式語言優缺點對比
    和大多數軟體應用程式開發一樣,開發人員正在用多種語言編寫人工智慧項目,但是沒有完美的程式語言能夠全速匹配人工智慧項目。程式語言的編程選擇通常取決於人工智慧應用程式的預期功能。關於最佳人工智慧程式語言的辯論從未停止過,因此本文比較了五個人工智慧項目最常用的程式語言,列出了它們的優缺點。
  • 想學編程?先來理解一下C語言的Helloworld程序吧
    C語言作為一門計算機科學歷史上裡程碑式的程式語言,現在依然被廣泛使用。其功能強大,內容簡單,想學習編程的小夥伴們不妨先學習一下C語言。本文將介紹一下K&R所寫的經典程序:Helloworld的簡要分析。
  • 哪門程式語言最流行?用程式設計師夢寐以求的程式語言,實現完美開發
    流行的秘訣沒錯,大多數人選擇某一種程式語言,不是因為這種語言有什麼獨特的特點,而是因為聽說其他人使用這種語言。但是我認為,外界因素對於程式語言的流行其實沒有想像中那麼大的影響力。我倒是覺得,問題出在對於什麼是優秀程式語言,黑客的看法與大多數的語言設計者不一樣。
  • c語言現在的就業形勢如何?開課吧C++課程怎麼樣?
    C/C++語言功能強大,可移植性強,應用領域廣泛,多年穩居程式語言榜前列。只要精通這兩門語言,其他的計算機語言很容易上手我個人認為,如果你是打算用高級語言的,學習c語言是必不可少的,學會C語言是你日後更上一個臺階的基礎,而且C語言的編程邏輯跟其他的,很多是相同的。所以如果是打算往這個方向發展的,靜下心來去學吧,不會錯的。
  • C語言入門級教程:基礎數據類型與基本算法,學編程從此刻開始!
    ● 構造類型 在編程的過程中只使用基本類型是遠遠不夠的,為了滿足需求,因此還要使用基本類型之外的類型,構造類型就是其中的一種。 構造類型可以使用基本類型構造出新的數據類型來滿足實際開發中的需求。構造類型有3種形式:數組類型、結構體類型、共用體類型。
  • 知識分享:C 語言函數指針之回調函數
    我的理解是:把一段可執行的代碼像參數傳遞那樣傳給其他代碼,而這段代碼會在某個時刻被調用執行,這就叫做回調。 如果代碼立即被執行就稱為同步回調,如果過後再執行,則稱之為異步回調。 回調函數就是一個通過函數指針調用的函數。
  • 教孩子寫遊戲:快速入門C++語言,理解這12個概念,1天時間夠了
    如你所想,機器語言也是一種程式語言,只不過放眼望去,機器語言的代碼全部是0和1的組合,不是特別專業的人,絕對看不懂寫了什麼。不過,機器語言的好處是計算機能直接讀懂。所以,在不久之後,程式設計師們又開發了新的程式語言,也就是我們現在熟知的高級語言。高級語言的優點,是非常接近人類使用的自然語言。比方說上面的乘法,用彙編語言是一堆代碼,而用高級語言,可以直接用乘號來書寫。我想,一個沒有學過編程的人,都能看明白高級語言中的加減乘除。
  • C語言函數調用過程中的內存變化解析
    相信很多編程新手村的同學們都會有一個疑問:C 語言如何調用函數的呢? 進入到子函數時,esp 已經變成了 0x0073fa8c,而 0x0073fa90 處存放的是,子函數執行完後返回到 main 函數中的地址。
  • 2020年最流行的10種程式語言是什麼?
    無論是飛機上的自動駕駛儀還是車輛中的數字速度計,多種技術都圍繞著我們。新技術和創新技術項目對於組織迅速擴大規模極為寶貴。技術是通過程式語言來實現的,技術領域中有600多種程式語言。程式語言的命令和識別每年都在變化。此外,新的程式語言還具有引人注目的特性和功能。
  • 全國青少年軟體編程等級考試:C語言四級考綱說明
    C語言共10級,本文介紹的是4級。考試性質全國青少年軟體編程等級考試標準(C/C++)由中國電子學會科普培訓與應用推廣中心指定。由全國青少年電子信息科普創新聯盟標準工作組開發,由中國電子學會普及工作委員會審核通過,適用於由中國電子學會主辦的青少年軟體編程等級考試(C/C++)。
  • 如何學好C語言判斷語句?攻略if語句是第一步
    C語言,是全球使用最多的程式語言。上次我們談到了switch語句,但在C語言中,if條件構成的選擇結構程序很重要。在實際問題中,往往需要對不同變量進行比較,然後分別執行不同的語句。如何使用if語句呢?小編在這裡談一談if語句基本用法與使用技巧。
  • 第一篇:C語言編程基礎語法
    本專欄系列分六篇,總結了C語言基礎知識的核心要點。教學視頻已上線,讀者可根據自身情況有選擇性地學習。01編程基礎C語言——貝爾實驗室、Dennis Ritchie屬於高級語言,更接近人類語言邏輯,需要編譯器編譯,執行依賴運行環境;但容易學習。其特點:模塊化編程程序設計,層次清晰;語句簡潔,提出程序庫概念;功能強大,系統、應用軟體均可開發;移植性好,適合不同的作業系統。除此之外,C語言還有豐富的運算符、數據結構等,程序設計自由度大,可以對硬體進行操作。
  • c語言中sscanf函數的高級用法
    sscanf函數用來從給定字符串中讀取所需數據,用在一些數據轉換時比較方便。常見用法和scanf類似,用%s,%d等獲取字符串和整數。但在%號後可以支持更多的格式,甚至是正則表達式,這樣一來sscanf的功能就比較強大了。