周建儒(四川信息職業(yè)技術(shù)學(xué)院,四川廣元628040)
?
C語(yǔ)言與C++語(yǔ)言幾點(diǎn)差異的應(yīng)用實(shí)例分析
周建儒
(四川信息職業(yè)技術(shù)學(xué)院,四川廣元628040)
摘要:C語(yǔ)言是面向過(guò)程的編程語(yǔ)言,C++語(yǔ)言是面向?qū)ο蟮木幊陶Z(yǔ)言,雖然它們是兩種不同的程序設(shè)計(jì)語(yǔ)言,但是在基礎(chǔ)語(yǔ)法的實(shí)際應(yīng)用中既有相似之處,又有細(xì)微差別,尤其是在字符串與字符數(shù)組的混合使用及互相轉(zhuǎn)換過(guò)程中體現(xiàn)得更為明顯,這些差異是其底層實(shí)現(xiàn)過(guò)程不同所致。結(jié)合程序?qū)嵗姆治隹梢钥闯觯瑑煞N語(yǔ)言在布爾數(shù)據(jù)類(lèi)型、字符串處理、指針與引用的參數(shù)傳遞等相關(guān)應(yīng)用中的差異。
關(guān)鍵詞:C語(yǔ)言;C++語(yǔ)言;實(shí)例分析
C語(yǔ)言是面向過(guò)程的編程語(yǔ)言,C++語(yǔ)言是面向?qū)ο蟮木幊陶Z(yǔ)言,兩者之間有一些共同的特點(diǎn)——多種數(shù)據(jù)類(lèi)型,豐富的運(yùn)算符,運(yùn)算靈活等。兩種語(yǔ)言在基礎(chǔ)語(yǔ)法上有相似之處,而在應(yīng)用上卻有細(xì)微的差別。本文就C語(yǔ)言和C++語(yǔ)言在邏輯值的計(jì)算、字符串處理、指針與引用方面的差異結(jié)合程序?qū)嵗敿?xì)剖析。
C語(yǔ)言沒(méi)有布爾類(lèi)型(bool),C++語(yǔ)言有布爾類(lèi)型。雖然C語(yǔ)言中沒(méi)有布爾類(lèi)型,但是卻有邏輯運(yùn)算和關(guān)系運(yùn)算,也有邏輯真和邏輯假的概念[1],用1表示邏輯真,用0表示邏輯假。雖然C++語(yǔ)言有布爾類(lèi)型,但是布爾值卻不是真正的邏輯值true和false,而是與C語(yǔ)言極為相似的表示方式——數(shù)值1和0分別表示邏輯真和假。因?yàn)檫壿嬛悼梢杂脭?shù)值1和0表示,所以C和C++的邏輯、關(guān)系運(yùn)算并無(wú)本質(zhì)區(qū)別,應(yīng)用靈活。下面結(jié)合程序進(jìn)行詳細(xì)分析。
示例程序1:


由于C++語(yǔ)言布爾類(lèi)型變量的值是1(真)或0(假),所以布爾變量不僅可以進(jìn)行邏輯、關(guān)系運(yùn)算,還可以進(jìn)行算術(shù)運(yùn)算。例如程序1中的語(yǔ)句(1),就是邏輯值參與算術(shù)運(yùn)算,關(guān)系運(yùn)算8>=3的結(jié)果是邏輯值1,邏輯運(yùn)算2&&-1的計(jì)算結(jié)果也是1,整個(gè)表達(dá)式1+2-1結(jié)果為整數(shù)2。此外,可以給布爾變量賦一個(gè)非零的整數(shù)(非0表示邏輯真),但是該布爾變量在參與運(yùn)算時(shí),其值不是所賦的整數(shù),而是1。因?yàn)樗硎具壿嫛罢妗保十?dāng)作1進(jìn)行運(yùn)算。例如程序1的語(yǔ)句(2)和(3),盡管變量x賦值為-2,但是2×x在計(jì)算時(shí)是2×1等于2,并非2×-2等于-4。關(guān)系表達(dá)式x>y等價(jià)于1>0,故關(guān)系成立,結(jié)果為“真”,值為1而并非0。
C語(yǔ)言與C++語(yǔ)言的關(guān)系、邏輯運(yùn)算與Java語(yǔ)言有本質(zhì)的不同。例如語(yǔ)句(4)和(5),表達(dá)式a2 C字符串與C++字符串的區(qū)別
C++語(yǔ)言集成了C語(yǔ)言中字符串(簡(jiǎn)稱C字符串)函數(shù),同時(shí)還擴(kuò)展了字符串類(lèi)string,所以,用C++語(yǔ)言編程時(shí)既可以使用C字符串的庫(kù)函數(shù),又可以使用string類(lèi)的成員函數(shù)。當(dāng)自定義函數(shù)的形式參數(shù)是string類(lèi)的對(duì)象,而實(shí)際參數(shù)是C字符數(shù)組時(shí),兩者類(lèi)型不同,此時(shí)需要將C字符數(shù)組轉(zhuǎn)化為C++字符串string類(lèi)的對(duì)象。具體的處理方式,我們通過(guò)以下示例程序來(lái)分析。
示例程序2:

標(biāo)準(zhǔn)C++中string類(lèi)的構(gòu)造函數(shù)是string(const char *s);可以用C語(yǔ)言的字符串(或字符數(shù)組)構(gòu)造C++的string類(lèi)對(duì)象(即C++字符串類(lèi)string),例如程序2中的語(yǔ)句(1)正是此用。C++語(yǔ)言中的string類(lèi)對(duì)象,可以使用重載運(yùn)算符“+”進(jìn)行字符串的連接,例如程序2中的語(yǔ)句(2),將字符串s2連接在字符串s1的末尾,并且不需考慮字符串s1是否能夠容納所有字符,因?yàn)閟tring類(lèi)的對(duì)象相當(dāng)于動(dòng)態(tài)數(shù)組,其內(nèi)存字節(jié)數(shù)會(huì)隨著字符串長(zhǎng)度自動(dòng)增加。然而,C語(yǔ)言的字符串連接卻不能使用“+”運(yùn)算符連接,只能使用strcat()函數(shù),例如語(yǔ)句(4),前提條件是數(shù)組ps有足夠的長(zhǎng)度可以容納字符串ps1的所有字符。此外,string類(lèi)對(duì)象之間可以用比較運(yùn)算符“==”“!=”直接進(jìn)行大小關(guān)系的比較運(yùn)算,如程序2中語(yǔ)句(5),也可以使用賦值運(yùn)算符“=”將一個(gè)sring類(lèi)對(duì)象直接賦值給另一個(gè)string對(duì)象,而C語(yǔ)言的字符數(shù)組是無(wú)法這般使用的。
c_str()函數(shù)原型是const char *c_str();它是string類(lèi)的成員函數(shù),返回一個(gè)以空字符結(jié)尾的字符串,即返回當(dāng)前字符串的首地址,但是不能直接將該地址賦值給字符類(lèi)型的指針,可以將當(dāng)前字符串拷貝給一個(gè)長(zhǎng)度合適的字符數(shù)組,例如語(yǔ)句(3)。s2是string類(lèi)的對(duì)象,s2.c_str()是將C++字符串對(duì)象s2轉(zhuǎn)化為C字符串常量,并將該字符串常量通過(guò)C語(yǔ)言的字符串拷貝函數(shù)拷貝到長(zhǎng)度合適的字符數(shù)組ps中。
在用C++語(yǔ)言編程時(shí),C字符串及庫(kù)函數(shù)和string類(lèi)及成員函數(shù)可以混合使用,但是兩者有本質(zhì)的區(qū)別,C字符串是普通數(shù)據(jù)類(lèi)型,要么是字符數(shù)組(char str[10]),要么是指向字符串的指針(char *str),內(nèi)存一旦分配,其長(zhǎng)度是不能自動(dòng)改變的,在進(jìn)行字符串的連接、拷貝操作時(shí)一定要注意字符串的長(zhǎng)度。C++字符串string是類(lèi),有豐富的成員函數(shù),使用格式是對(duì)象名.函數(shù)名();當(dāng)C字符串和string的對(duì)象進(jìn)行混合操作時(shí),最好是將類(lèi)型轉(zhuǎn)換為一致,盡可能避免C字符串與string類(lèi)的對(duì)象直接計(jì)算。
C++字符串并不以‘ 主站蜘蛛池模板: 天天干天天色综合网| 视频二区亚洲精品| 亚洲欧洲日产无码AV| 午夜少妇精品视频小电影| 99视频在线免费看| 男女性午夜福利网站| 成人福利一区二区视频在线| 九色视频线上播放| 久久亚洲国产最新网站| 99激情网| 伊大人香蕉久久网欧美| 国产最新无码专区在线| 99无码中文字幕视频| 国产清纯在线一区二区WWW| 精品亚洲麻豆1区2区3区| 精品国产Ⅴ无码大片在线观看81| 欧美日韩中文字幕在线| 精品无码人妻一区二区| 97视频免费在线观看| 国产原创自拍不卡第一页| 国产粉嫩粉嫩的18在线播放91 | 国产后式a一视频| 国内精品视频区在线2021| 亚洲精品777| 免费看a级毛片| 久草视频精品| 亚洲国产无码有码| 欧美性久久久久| 成人午夜视频免费看欧美| 国产网友愉拍精品| 亚洲成A人V欧美综合| 国产成人亚洲欧美激情| 亚洲视频欧美不卡| 91精品免费久久久| 青青草原国产免费av观看| 美女内射视频WWW网站午夜 | 国产99视频在线| 国产91成人| 蜜芽国产尤物av尤物在线看| 91精品国产自产91精品资源| 精品无码一区二区三区电影| 久久免费视频6| 69av免费视频| 欧美精品另类| 日韩在线1| 国产成人8x视频一区二区| 国产不卡在线看| 亚洲精品视频在线观看视频| 深夜福利视频一区二区| 九九九国产| 99精品免费欧美成人小视频 | 亚洲最猛黑人xxxx黑人猛交| Aⅴ无码专区在线观看| 伊人色综合久久天天| 国产三级毛片| 五月丁香伊人啪啪手机免费观看| 午夜啪啪网| 青草视频免费在线观看| 亚洲第一成人在线| 国产本道久久一区二区三区| 免费无码网站| 91免费片| 狠狠色噜噜狠狠狠狠奇米777 | 国产又粗又猛又爽视频| 国产成人区在线观看视频| 99热精品久久| 欧美日韩资源| 亚洲无码91视频| 国产精品久久久久鬼色| 凹凸精品免费精品视频| 日韩精品无码免费一区二区三区| 野花国产精品入口| 激情六月丁香婷婷四房播| 中文字幕啪啪| 无码内射在线| 91色综合综合热五月激情| 欧美日在线观看| 国产男人天堂| 色老二精品视频在线观看| 国产99热| 国产欧美日韩在线一区| 日韩av手机在线|