快速上手系列-C語言之typedef

2021-01-07 濁酒敬風塵

之前有提到過typedef,它的作用就是給已有的類型重新定義一個名字。

比如當我們看別人的代碼的時候,是否注意到這樣定義變量:INT16 a;或者INT32 a;很明顯就能看出來這兩個類型都是整型的,不同的是INT16是16位,INT32是32位的整型。那具體是什麼類型的數據,它們可能長這個樣子:typedef int INT32;typedef short INT16;

既然typedef的作用是給已有的類型重新定義一個新的名字,那麼如何使用呢?先說說typedef定義類型的方法:

1、用typedef聲明新的類型名代替已有類型名

2、typedef語句的的一般形式:

typedef 原數據類型 新的類型名

如在32位平臺我們給int重新取名INT32,形如:typedef int INT32;嗯,大概就是這個樣子的。

來看個例子:

右圖中新的類型名Date代替了結構體類型,此後可以用Date來定義該結構體型變量:

如:Date day;

Date*p;(p為指向該結構體型數據的指針)

3、稍微複雜點的,用一個簡單的類型名代替複雜的類型表示方法:

聲明 NUM 為整型數組類型:typedef int NUM[5];

申明STRING為字符指針類型:

typedef char * STRING;

聲明 POINTER 為指向函數的指針類型:

typedef int (*POINTER)(int, int);

上面幾個例子相對來說是複雜了一些,當然,我們可以用一些固定的步驟去定義它,即便是再複雜一點,也完全沒問題。

用typedef定義類型的方法:

1、先按定義變量的方法寫出定義體:

int i;

2、在最前面添加typedef:

typedef int i;

3、將變量名換成新類型名:

typedef int NUM;

然後就可以用新類型名去定義變量了,如:NUM n;這樣看來,還是比較簡單的,其他稍微複雜些的也可以用同樣的方法去定義。

至此,基本會使用typedef為已有的類型重新定義一個名字了,那麼,還有幾點知識是需要知道的:

1、用typedef可以聲明各種類型名,但不能用來定義變量;

2、用typedef只是對已經存在的類型增加一個類型名,而沒有創造新的類型;

上一篇:

快速上手系列-C語言之枚舉

相關焦點

  • C語言之類型定義(typedef)
    typedef關鍵字可以用於給數據類型定義一個別名,比如說你本名叫關穀神奇,我嫌棄這個名字太長了,所以給你取一個別名,叫關谷,以後我叫關谷的時候你就知道在叫你了。當你定義了一個結構體時,每次創建一個結構體都要使用struct+結構體名的方式,而用了typedef之後,只要一個結構體別名就可以創建了。
  • 快速上手系列-C語言之基礎篇(一)
    按照之前的計劃,這篇文章本該寫C語言簡介,包括一些歷史背景,發展狀況, 語言特點什麼的,這些東西著實比較囉嗦。吃飯用的筷子,到現在我都不知道它的由來,不知道它是在什麼歷史背景下誕生的有些東西還是有必要了解一下,比如,C語言所產生的代碼運行速度比彙編語言編寫的代碼運行速度稍慢一點,但還是有得一拼,同時C語言要比彙編語言編寫的代碼可讀性高,可移植性好。
  • C語言typedef VS define,孰優孰劣?
    typedefC 語言提供了 typedef關鍵字,您可以使用它來為類型取一個新的名字。,但您也可以使用小寫字母,如下:typedef unsigned char byte;您也可以使用 typedef 來為用戶自定義的數據類型取一個新的名字。
  • C語言中typedef用法總結,看完就能像編程老手一樣熟練運用
    請看下文C語言中typedef關鍵字應用比較常見,許多C語言初學者對它的用法不甚了解。unsigned int UINT;新類型名UINT定義之後就可以使用它來定義變量,定義代碼如下:UINT a,b,c;2) 代碼中的類型與平臺無關由於C語言代碼有較強的移植性,
  • C語言#define和typedef的用法區別,以及陷阱
    關注+星標公眾號,不錯過精彩內容編排 | strongerHuang微信公眾號 | 嵌入式專欄在C語言編程中在C/C++語言中,typedef常用來定義一個標識符及關鍵字的別名,它是語言編譯過程的一部分,但它並不實際分配內存空間,比如:typedef int INT;typedef  (int*)   pINT;typedef unsigned int uint32_ttypedef可以增強程序的可讀性,以及標識符的靈活性,但它也有
  • C語言中typedef與define的這些區別值得關注
    請看下文C語言中typedef與define有些功能有點類似,比如它們均可以給一個對象取個別名。typedef用來定義自己習慣使用的數據類型名稱,可以替代自己所熟悉的基本類型、數組類型、指針類型以及自己定義的結構體類型、共用體類型、枚舉類型等。一旦我們在程序中使用typedef定義了自己的數據類型名稱,我們就可以像使用int、float和double等基本數據類型一樣來使用它。
  • 「C語言指針」起別名關鍵字typedef和結構體類型的恩怨情仇
    其中提到了起別名關鍵字typedef,在那裡我們只是簡單介紹過:在實際工作中,程式設計師們普遍使用它,但是並未展開去講細節。所以本文決定沿襲上一篇文章的思路,結合一些程序實例,細緻地展開討論typedef和結構體相碰產生的奇妙反應。首先,typedef是C語言的一個關鍵字,它的作用是為類型名定義別名。
  • 如何寫出高效優美的單片機C語言代碼?
    將比較慢的順序查找法用較快的二分查找或亂 序查找法代替,插入排序或冒泡排序法用快速排序、合併排序或根排序代替,都可以大大提高程序執行的效率。.選擇一種合適的數據結構也很重要,比如你在一堆 隨機存放的數中使用了大量的插入和刪除指令,那使用鍊表要快得多。數組與指針語句具有十分密碼的關係,一般來說,指針比較靈活簡潔,而數組則比較直觀,容 易理解。
  • struct和typedef struct
    >s2.a=10;======================================================================================  3 掌握上面兩條就可以了,不過最後我們探討個沒多大關係的問題    如果在c程序中我們寫
  • 快速上手系列-C語言之基礎篇(二)數據類型與運算符
    在上一篇文章《快速上手系列-C語言之基礎篇(一)》中寫了關於C語言的程序結構,關鍵字及控制語句。本篇主要寫寫C語言中數據類型,以及運算符相關方面的知識。二、C語言數據類型:1、整型數據整型常量的表示方法:十進位;八進位以數字0開頭,如0123;十六進位以0x開頭,如0x12整型變量分為有符號/
  • C語言之 static
    本來一個內聯函數放在頭文件中申明為 inline 就可以了,為什麼還要加上 static 呢?這是為了在不同文件中使用 include 包含頭文件時能夠產生不同的實體,這樣就不會出現重複定義的情況了。同理,如果你在頭文件中用 static 申明一個變量,那麼每次使用 include 包含這個頭文件的時候都會產生一個變量,雖然它們的名字相同,但是它們內存位置卻是不同的,比如張三這個名字,雖然都叫張三,但可能他們不是同一個人,所做的一些行為也就不一樣了。
  • C語言的那些小秘密之字節對齊
    按照預先的計劃安排,這次應該是寫《C語言的那些小秘密之鍊表(三)》的,但是我發現如果直接開始講解linux內核鍊表的話,可能有些地方如果我們不在此做一個適當的講解的話,有的讀者看起來可能難以理解,所以就把字節對齊挑出來另寫一篇博客,我在此儘可能的講解完關於字節對齊的內容,希望我的講解對你有所幫助。
  • 快速上手系列-C語言之函數
    上篇寫了C語言中的數組,那接下來就到函數了吧。函數是C語言程序的基本模塊,通過對函數模塊的調用實現特定的功能。每個 C 程序都至少有一個函數,那就是主函數 main(),C語言不僅提供極為豐富的庫函數,還允許用戶建立自己定義的函數,就是說所有的C程序都可以定義其他額外的函數。
  • c語言之共用體union、枚舉、大小端模式
    上一個專題我們詳細的分享了c語言裡面的結構體用法,讀者在看這些用法的時候,可以一邊看一邊試驗,掌握了這些基本用法就完全夠用了,當然在以後的工作中
  • 快速上手系列-C語言之預編譯命令、宏定義及條件編譯
    上一篇寫了C語言中變量的存儲類別,提到普通局部變量、普通全局變量和靜態局部變量及靜態全局變量,這裡簡單了解一下C語言的預編譯命令、宏定義和條件編譯。預編譯命令(預編譯處理--->編譯---->彙編--->連接)1、預處理:預處理是C語言的一個重要功能,如文件包含、常量定義都屬於預處理命令,C語言提供的預處理功能主要有以下三種:1)文件包含 #include2)宏定義 #define3)條件編譯 #if #endif4)防止頭文件重複包含2、文件包含處理
  • 程式設計師C語言快速上手——環境準備篇(一)
    前言大多數人在Windows上使用Visual Studio IDE作為C語言學習環境,實際上我認為這是非常錯誤的做法。每個人都有各自的理由,比如學校是這麼教的,要保持和課堂同步,又比如要做畢設等等,還有貌似合理的更高級說法,比如有人喜歡說工具是其次的,只要學好了C語言語法就行,其他任何環境也能快速上手。對不起,如果是針對一門跨平臺的高級語言,這個說法成立,但是對於C語言,不成立。
  • 為什麼很多人編程喜歡用typedef?如何避免濫用?
    1. typedef 的基本使用1.1 typedef與結構體的結合使用typedef 是 C 語言的一個關鍵字,用來給某個類型起個別名,也就是給
  • C語言基礎(下)
    C語言的世界結構體類型什麼是結構體Student student = {"泱澈",&stu,gen};printf("%s\n", student.name);printf("%s\n", (student.s)->name);printf("%s\n", student.gen.ch);return 0;}結構體變量在作為參數傳遞的時候使用的是值傳遞typedef
  • 如何快速實現C語言上手編程,福利在這裡,C語言編程的入門教程
    C語言編程如何快速實現在我們初次學習C語言的時候,總想著快速的實現編譯過程。那麼C語言編程究竟是如何實現的呢,當然是要通過自己喜歡的編譯器來編譯完成,那麼今天就為大家介紹C語言編程是如何快速的實現。首先我們下載一款適合C語言的編譯器,今天為大家講解的C語言編譯器為CodeBlocks,該編譯器沒有太過複雜,很符合初學者,簡單上手快。2. 首先雙擊打開編譯器,進入登錄選擇界面,我們選擇添加一個新項目。3.
  • 單片機c語言教程:C51運算符和表達式
    如果你是個DELPHI 編程愛好者或是DELPHI程式設計師,你對變量的定義也許習慣了DELPHI 的關鍵字,如 int 類型常會用關鍵字Integer來定義,在用 單片機c語言時你還想用回這個的話,你能這樣寫:本文引用地址:http://www.eepw.com.cn/article/170888.htmtypedef int integer;