五月天青色头像情侣网名,国产亚洲av片在线观看18女人,黑人巨茎大战俄罗斯美女,扒下她的小内裤打屁股

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

【零基礎(chǔ)學(xué)C語(yǔ)言】知識(shí)總結(jié)八:宏定義與枚舉類(lèi)型

2022-10-11 15:33 作者:C語(yǔ)言編程__Plus  | 我要投稿



1、#define宏定義

以#號(hào)開(kāi)頭的都是編譯預(yù)處理指令,它們不是C語(yǔ)言的成分,但是C程序離不開(kāi)它們,#define用來(lái)定義一個(gè)宏,程序在預(yù)處理階段將用define定義的來(lái)內(nèi)容進(jìn)行了替換。因此在程序運(yùn)行時(shí),常量表中并沒(méi)有用define定義的常量,系統(tǒng)不為它分配內(nèi)存。define定義的常量,預(yù)處理時(shí)只是直接進(jìn)行了替換,,它用來(lái)將一個(gè)標(biāo)識(shí)符定義為一個(gè)字符串,該標(biāo)識(shí)符被稱(chēng)為宏名,被定義的字符串稱(chēng)為替換文本。,因此在編譯時(shí)它不對(duì)宏的定義進(jìn)行檢查,作用域不影響對(duì)常量的訪問(wèn) 。它的常量值只能是字符串或數(shù)字。? ? 該命令有兩種格式:一種是簡(jiǎn)單的常量宏定義, 另一種是帶參數(shù)的宏定義。


? ? ? 不帶參數(shù)的宏:#define< 名字 >< 值 >? ? 要注意,沒(méi)有結(jié)尾的分號(hào),因?yàn)椴皇荂的語(yǔ)句,名字必須是一個(gè)單詞,值可以是各種東西,宏定義是用宏名來(lái)表示一個(gè)字符串,在宏展開(kāi)時(shí)又以該字符串取代宏名,這只是一種簡(jiǎn)單的代換,字符串中可以含任何字符,可以是常數(shù),也可以是表達(dá)式,預(yù)處理程序?qū)λ蛔魅魏螜z查。如有錯(cuò)誤,只能在編譯已被宏展開(kāi)后的源程序時(shí)發(fā)現(xiàn)。

注意.宏定義不是說(shuō)明或語(yǔ)句,在行末不必加分號(hào),如加上分號(hào)則連分號(hào)也一起置換。宏定義其作用域?yàn)楹甓x命令起到源程序結(jié)束。如要終止其作用域可使用#undef命令

帶參宏定義的一般形式為:#define 宏名(形參表)字符串,也是沒(méi)有結(jié)尾的分號(hào),可以帶多個(gè)參數(shù) ,#define NB(a,b)((a)>(b)?(b):(a)),? 也可以組合(嵌套)使用其他宏,注意 帶參數(shù)宏的原則 一切都要有括號(hào),參數(shù)出現(xiàn)的每個(gè)地方都要有括號(hào)。帶參數(shù)的宏在大型的程序的代碼中使用非常普遍,在#和##這兩個(gè)運(yùn)算符的幫助下可以很復(fù)雜,如“產(chǎn)生函數(shù)”,但是有些宏會(huì)被inline函數(shù)代替(C++的函數(shù))

使用宏好處:提高運(yùn)行效。

定義的標(biāo)識(shí)符不占內(nèi)存,只是一個(gè)臨時(shí)的符號(hào),預(yù)編譯后這個(gè)符號(hào)就不存在了。在簡(jiǎn)單的程序使用帶參數(shù)的宏定義可完成函數(shù)調(diào)用的功能,又能減少系統(tǒng)開(kāi)銷(xiāo),提高運(yùn)行效率。正如C語(yǔ)言中所講,函數(shù)的使用可以使程序更加模塊化,便于組織,而且可重復(fù)利用。

? ? ? “方便程序的修改”。使用宏定義可以用宏代替一個(gè)在程序中經(jīng)常使用的常量。注意,是“經(jīng)?!笔褂玫?。這樣,當(dāng)需要改變這個(gè)常量的值時(shí),就不需要對(duì)整個(gè)程序一個(gè)一個(gè)進(jìn)行修改,只需修改宏定義中的常量即可。且當(dāng)常量比較長(zhǎng)時(shí),使用宏就可以用較短的有意義的標(biāo)識(shí)符來(lái)代替它,這樣編程的時(shí)候就會(huì)更方便,不容易出錯(cuò)。因此,宏定義的優(yōu)點(diǎn)就是方便和易于維護(hù)。

2、enum枚舉

? ? ? ? 枚舉型是一個(gè)集合,集合中的元素(枚舉成員)是一些命名的整型常量,元素之間用逗號(hào),隔開(kāi)。它是一種用戶(hù)定義的數(shù)據(jù)類(lèi)型,它用關(guān)鍵字enum以如下語(yǔ)法來(lái)聲明,:enum 枚舉類(lèi)型名字,{名字0,...,名字n};第一個(gè)枚舉成員的默認(rèn)值為整型的0,后續(xù)枚舉成員的值在前一個(gè)成員上加1 (當(dāng)然這個(gè)是可以自定義成員值的)


? ? ? ? 枚舉類(lèi)型名字通常并不真的使用,要用的是在它大括號(hào)里邊的名字,因?yàn)樗鼈兙褪浅A糠?hào),它們的類(lèi)型是int,值則是依次從零到n,如 enum? week { Monday,Tuoesday,Wedenday};? 就創(chuàng)建了三個(gè)常量,Monday的值是0,Tuoesday是1,Wedenday是2,當(dāng)需要一些可以可以排列起來(lái)的常量值的時(shí)候,定義枚舉的意義就是給了這些常量名字。雖然枚舉類(lèi)型可以當(dāng)類(lèi)型使用,但是實(shí)際上并不常用,但是如果是有意是排比名字,用枚舉比宏定義方便,枚舉比用好些,因?yàn)槊杜e有int類(lèi)型,在C 語(yǔ)言中,枚舉類(lèi)型是被當(dāng)做 int 或者 unsigned int 類(lèi)型來(lái)處理的,既然枚舉也是一種數(shù)據(jù)類(lèi)型,所以它和基本數(shù)據(jù)類(lèi)型一樣也可以對(duì)變量進(jìn)行聲明,枚舉也可以用typedef關(guān)鍵字將枚舉類(lèi)型定義成別名,并利用該別名進(jìn)行變量聲明

注意:

1、同一個(gè)程序中不能定義同名的枚舉類(lèi)型,不同的枚舉類(lèi)型中也不能存在同名的命名常量

2、枚舉成員)是常量而不是變量,這個(gè)一定要搞清楚,因?yàn)槊杜e成員的是常量,所以不能對(duì)它們賦值,只能將它們的值賦給其他的變量

3、枚舉類(lèi)型的定義和變量的聲明分開(kāi):如果對(duì)枚舉型的變量賦整數(shù)值時(shí),需要進(jìn)行類(lèi)型轉(zhuǎn)換

枚舉在用switch-case結(jié)構(gòu)中使用非常方便.

枚舉型是預(yù)處理指令#define的替代,枚舉和宏其實(shí)非常類(lèi)似,宏在預(yù)處理階段將名字替換成對(duì)應(yīng)的值,枚舉在編譯階段將名字替換成對(duì)應(yīng)的值,其中一個(gè)枚舉常量的占的字節(jié)數(shù)為4個(gè)字節(jié),恰好和int類(lèi)型的變量占的字節(jié)數(shù)相同。

你學(xué)會(huì)了嘛?

對(duì)啦對(duì)啦!另外的話為了幫助大家,輕松,高效學(xué)習(xí)C語(yǔ)言/C++,我給大家分享我收集的資源,從最零基礎(chǔ)開(kāi)始的教程到C語(yǔ)言項(xiàng)目案例,幫助大家在學(xué)習(xí)C語(yǔ)言的道路上披荊斬棘!可以來(lái)我粉絲群領(lǐng)取哦~

整理分享(多年學(xué)習(xí)的源碼、項(xiàng)目實(shí)戰(zhàn)視頻、項(xiàng)目筆記,基礎(chǔ)入門(mén)教程)最重要的是你可以在群里面交流提問(wèn)編程問(wèn)題哦!



【零基礎(chǔ)學(xué)C語(yǔ)言】知識(shí)總結(jié)八:宏定義與枚舉類(lèi)型的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
莱芜市| 大理市| 阿克陶县| 绥棱县| 新和县| 衡水市| 五大连池市| 昌江| 张家界市| 巴东县| 诸城市| 长子县| 洛南县| 阿巴嘎旗| 涟水县| 永城市| 卢氏县| 章丘市| 察隅县| 平南县| 双桥区| 青川县| 石阡县| 德保县| 汝州市| 启东市| 肇源县| 萝北县| 闽清县| 大足县| 乾安县| 太保市| 汉川市| 阳原县| 聂荣县| 浙江省| 新乡县| 陆丰市| 新平| 资兴市| 广南县|