日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

C语言 typedef 和 define 区别 - C语言零基础入门教程

發布時間:2024/9/27 编程问答 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C语言 typedef 和 define 区别 - C语言零基础入门教程 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目錄

  • 一.typedef 簡介
    • 1.typedef 簡化復雜的類型聲明
      • A.定義普通變量
      • B.定義函數指針
      • C.定義結構體
    • 2.定義與平臺無關的類型
  • 二.define 簡介
  • 三.typedef 和 define 區別
    • 1.執行時間不同
    • 2.功能有差異
    • 3.作用域不同
  • 四.猜你喜歡

零基礎 C/C++ 學習路線推薦 : C/C++ 學習目錄 >> C 語言基礎入門

一.typedef 簡介

C 語言 typedef 是為現有的類型起一個別名,使用起來更加的方便,注意:它并沒有產生新的類型;

1.typedef 簡化復雜的類型聲明

A.定義普通變量

typedef int REAL_TYPE;REAL_TYPE a = 10; //等價 int a = 10; printf("a=%d",a);

B.定義函數指針

//聲明了一個返回 bool 類型并帶有兩個(int和double)形參的 typedef bool (*FuncPointer)(int, double);函數的指針類型FuncPointer FuncPointer pFunc; //聲明了一個FuncPointer類型的函數指針對象pFunc

C.定義結構體

**在 C 語言中,如果定義結構體的時候沒有聲明 typedef,聲明結構體變量時就必須用struct 來聲明,否則會報錯;**示例如下:

//不使用typedef struct _Person {string name;int age;float height; }; struct _Person person; //C語言中必須添加struct,C++可以不添加struct//使用typedef typedef struct _Person {string name;int age;float height; }Person; Person person;//使用typedef定義變量更加簡單

在 C++ 中定義結構體時即便沒有聲明 typedef ,聲明變量不添加 struct 也可以正常使用;

2.定義與平臺無關的類型

用 typedef 來定義與平臺無關的類型,例如:同一份代碼需要在 Linux / Mac / windows 使用,而每個平臺都有不同的差異,可以通過以下方式解決:

#ifdef __APPLE__ //MAC平臺:REAL_TYPE表示 int 類型 typedef int REAL_TYPE; #elif WIN32 //Windows平臺:REAL_TYPE表示 int 類型 typedef double REAL_TYPE; #else //Linux平臺:REAL_TYPE表示 bool 類型 typedef bool REAL_TYPE; #endif

重上面代碼可以看出,在不同的平臺定義 REAL_TYPE 變量時,對應的數據類型都不一樣,重而可以達到根據平臺的差異性自定義設置的問題!

二.define 簡介

C 語言中,可以用 #define 定義一個標識符來表示一個常量/函數,用 #define 定義標識符的一般形式為:

/******************************************************************************************/ //@Author:猿說編程 //@Blog(個人博客地址): www.codersrc.com //@File:C語言教程 - C語言 typedef 和 define 區別 //@Time:2021/06/27 08:00 //@Motto:不積跬步無以至千里,不積小流無以成江海,程序人生的精彩需要堅持不懈地積累! /******************************************************************************************///定義常量 #define MAX_VALUE 100 //定義整型變量MAX_VALUE值為100 #define USER_NAME "huge" //定義字符串變量USER_NAME值為"huge" #define PI 3.1415926 //定義浮點數變量PI值為3.1415926 //定義簡單函數 #define MAX(a,b) (a>b)?a:b //取兩個數最大值 #define MIN(a,b) (a<b)?a:b //取兩個數最小值 //定義復雜多行的函數 #define MACRO(arg1, arg2) do { \\ stmt1; \ stmt2; \\ } while(0) 關鍵是要在每一個換行的時候加上一個 "\ "

凡是以#開頭的均為預處理指令,預處理又叫預編譯。預編譯不是編譯,而是編譯前的處理。這個操作是在正式編譯之前由系統自動完成的。

使用 define 定義一個多行的復雜函數,關鍵是要在每一個換行的時候加上一個 \;

三.typedef 和 define 區別

1.執行時間不同

關鍵字 typedef 在編譯階段有效,由于是在編譯階段,因此 typedef 有類型檢查的功能。

[#define](https://www.codersrc.com/archives/8894.html) 則是宏定義,發生在預處理階段,也就是編譯之前,它只進行簡單而機械的字符串替換,而不進行任何檢查。凡是以 # 開頭的均為預處理指令,預處理又叫預編譯。預編譯不是編譯,而是編譯前的處理。這個操作是在正式編譯之前由系統自動完成的。

2.功能有差異

  • typedef 用來定義類型的別名,定義與平臺無關的數據類型,與 struct 的結合使用等。
  • #define 不只是可以為類型取別名,還可以定義常量、變量、編譯開關等。

3.作用域不同

#define 沒有作用域的限制,只要是之前預定義過的宏,在以后的程序中都可以使用;

/******************************************************************************************/ //@Author:猿說編程 //@Blog(個人博客地址): www.codersrc.com //@File:C語言教程 - C語言 typedef 和 define 區別 //@Time:2021/06/27 08:00 //@Motto:不積跬步無以至千里,不積小流無以成江海,程序人生的精彩需要堅持不懈地積累! /******************************************************************************************/void func1() {#define HW "HelloWorld"; } void func2() {string str = HW;cout << str << endl; }

typedef有自己的作用域;

/******************************************************************************************/ //@Author:猿說編程 //@Blog(個人博客地址): www.codersrc.com //@File:C語言教程 - C語言 typedef 和 define 區別 //@Time:2021/06/27 08:00 //@Motto:不積跬步無以至千里,不積小流無以成江海,程序人生的精彩需要堅持不懈地積累! /******************************************************************************************/void func1() {typedef unsigned int UINT; } void func2() {UINT uValue = 5;//error C2065: 'UINT' : undeclared identifier }

四.猜你喜歡

  • C 語言 數組下標越界和內存溢出區別
  • C 語言 指針聲明和定義
  • C 語言 指針 p++ / p–
  • C 語言 p++/§++/_(p++)/_p++
  • C 語言 使用指針遍歷數組
  • C 語言 指針和數組區別
  • C 語言 指針數組和數組指針區別
  • C 語言 空指針 NULL
  • C 語言 void 指針
  • C 語言 野指針
  • C 語言 函數值傳遞和址傳遞
  • C 語言 函數缺省參數
  • C 語言 函數不定長參數
  • C 語言 函數指針
  • C 語言 指針函數
  • C 語言 回調函數 callback
  • C 語言 typedef
  • C 語言 define 定義常量
  • C 語言 define 防止頭文件重復包含
  • C 語言 define 定義函數
  • C 語言 define 定義函數(多行書寫)
  • C 語言 typedef 和 define 區別
  • 未經允許不得轉載:猿說編程 ? C 語言 typedef 和 define 區別

    總結

    以上是生活随笔為你收集整理的C语言 typedef 和 define 区别 - C语言零基础入门教程的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。