奶头挺立呻吟高潮av全片,成人试看120秒体验区,性欧美极品v,A片高潮抽搐揉捏奶头视频

C語言

typede和define區(qū)別

時(shí)間:2025-05-23 21:24:47 C語言 我要投稿
  • 相關(guān)推薦

typede和define區(qū)別

  C語言的應(yīng)用范圍廣泛,具備很強(qiáng)的數(shù)據(jù)處理能力,不僅僅是在軟件開發(fā)上,而且各類科研都需要用到C語言,適于編寫系統(tǒng)軟件,三維,二維圖形和動(dòng)畫,具體應(yīng)用比如單片機(jī)以及嵌入式系統(tǒng)開發(fā)。以下是小編為大家搜索整理的typede和define區(qū)別,希望能給大家?guī)韼椭?更多精彩內(nèi)容請持續(xù)關(guān)注我們應(yīng)屆畢業(yè)生考試網(wǎng)!

  1) #define是預(yù)處理指令,在編譯預(yù)處理時(shí)進(jìn)行簡單的替換,不作正確性檢查,不關(guān)含義是否正確照樣帶入,只有在編譯已被展開的源程序時(shí)才會(huì)發(fā)現(xiàn)可能的錯(cuò)誤并報(bào)錯(cuò)。例如:

  #define PI 3.1415926

  程序中的:area=PI*r*r 會(huì)替換為3.1415926*r*r

  如果你把#define語句中的數(shù)字9 寫成字母g 預(yù)處理也照樣帶入。

  2)typedef是在編譯時(shí)處理的。它在自己的作用域內(nèi)給一個(gè)已經(jīng)存在的類型一個(gè)別名,但是You cannot use the typedef specifier inside a function definition。

  3)typedef int * int_ptr;

  與

  #define int_ptr int *

  作用都是用int_ptr代表 int * ,但是二者不同,正如前面所說 ,#define在預(yù)處理 時(shí)進(jìn)行簡單的替換,而typedef不是簡單替換 ,而是采用如同定義變量的方法那樣來聲明一種類型。也就是說;

  //refer to (xzgyb(老達(dá)摩))

  #define int_ptr int *

  int_ptr a, b; //相當(dāng)于int * a, b; 只是簡單的宏替換

  typedef int* int_ptr;

  int_ptr a, b; //a, b 都為指向int的指針,typedef為int* 引入了一個(gè)新的助記符

  這也說明了為什么下面觀點(diǎn)成立

  //QunKangLi(維護(hù)成本與程序員的創(chuàng)造力的平方成正比)

  typedef int * pint ;

  #define PINT int *

  那么:

  const pint p ;//p不可更改,但p指向的內(nèi)容可更改

  const PINT p ;//p可更改,但是p指向的內(nèi)容不可更改。

  pint是一種指針類型 const pint p 就是把指針給鎖住了 p不可更改

  而const PINT p 是const int * p 鎖的是指針p所指的對象。

  3)也許您已經(jīng)注意到#define 不是語句 不要在行末加分號,否則 會(huì)連分號一塊置換。

  另轉(zhuǎn)一篇

  一、typedef的用法

  在C/C++語言中,typedef常用來定義一個(gè)標(biāo)識符及關(guān)鍵字的別名,它是語言編譯過程的一部分,但它并不實(shí)際分配內(nèi)存空間,實(shí)例像:

  typedef int INT; typedef int ARRAY[10]; typedef (int*) pINT;

  typedef可以增強(qiáng)程序的可讀性,以及標(biāo)識符的靈活性,但它也有“非直觀性”等缺點(diǎn)。

  二、#define的用法

  #define為一宏定義語句,通常用它來定義常量(包括無參量與帶參量),以及用來實(shí)現(xiàn)那些“表面似和善、背后一長串”的宏,它本身并不在編譯過程中進(jìn)行,而是在這之前(預(yù)處理過程)就已經(jīng)完成了,但也因此難以發(fā)現(xiàn)潛在的錯(cuò)誤及其它代碼維護(hù)問題,它的實(shí)例像:

  #define INT int#define TRUE 1#define Add(a,b) ((a)+(b));#define Loop_10 for (int i=0; i<10; i++)

  在Scott Meyer的Effective C++一書的條款1中有關(guān)于#define語句弊端的分析,以及好的替代方法,大家可參看。

  三、#typedef與#define的區(qū)別

  從以上的概念便也能基本清楚,typedef只是為了增加可讀性而為標(biāo)識符另起的新名稱(僅僅只是個(gè)別名),而#define原本在C中是為了定義常量, 到了C++,const、enum、inline的出現(xiàn)使它也漸漸成為了起別名的工具。有時(shí)很容易搞不清楚與typedef兩者到底該用哪個(gè)好,如 #define INT int這樣的語句,用typedef一樣可以完成,用哪個(gè)好呢?我主張用typedef,因?yàn)樵谠缙诘脑S多C編譯器中這條語句是非法的,只是現(xiàn)今的編譯器 又做了擴(kuò)充。為了盡可能地兼容,一般都遵循#define定義“可讀”的常量以及一些宏語句的任務(wù),而typedef則常用來定義關(guān)鍵字、冗長的類型的別 名。

  宏定義只是簡單的字符串代換(原地?cái)U(kuò)展),而typedef則不是原地?cái)U(kuò)展,它的新名字具有一定的封裝性,以致于新命名的標(biāo)識符具有更易定義變量的功能。請看上面第一大點(diǎn)代碼的第三行:

  typedef (int*) pINT;以及下面這行:#define pINT2 int*

  效果相同?實(shí)則不同!實(shí)踐中見差別:pINT a,b;的效果同int *a; int *b;表示定義了兩個(gè)整型指針變量。而pINT2 a,b;的效果同int *a, b;表示定義了一個(gè)整型指針變量a和整型變量b。

  注意:兩者還有一個(gè)行尾;號的區(qū)別哦!

【typede和define區(qū)別】相關(guān)文章:

C語言#define的用法05-01

related和relevant的區(qū)別07-22

MiniHDMI和HDMI的區(qū)別05-05

related和relevant的區(qū)別02-05

Java和PHP的區(qū)別04-30

網(wǎng)關(guān)和路由的區(qū)別08-16

java和js的區(qū)別08-05

嘔血和咯血的區(qū)別04-01

C語言的關(guān)鍵字define的使用08-03

主站蜘蛛池模板: 郴州市| 南漳县| 云龙县| 南涧| 靖边县| 康定县| 雅安市| 英吉沙县| 东海县| 崇明县| 常熟市| 蚌埠市| 宝应县| 农安县| 隆化县| 额济纳旗| 石景山区| 洮南市| 南开区| 梅州市| 蕲春县| 阿图什市| 安宁市| 灵山县| 安溪县| 江孜县| 台中县| 定州市| 白山市| 海兴县| 云南省| 贡嘎县| 津市市| 眉山市| 楚雄市| 安宁市| 威海市| 会昌县| 新乡市| 凤凰县| 宁安市|