• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    C語言與C++語言幾點差異的應(yīng)用實例分析

    2016-04-18 07:24:40周建儒四川信息職業(yè)技術(shù)學院四川廣元628040
    關(guān)鍵詞:實例分析語言

    周建儒(四川信息職業(yè)技術(shù)學院,四川廣元628040)

    ?

    C語言與C++語言幾點差異的應(yīng)用實例分析

    周建儒
    (四川信息職業(yè)技術(shù)學院,四川廣元628040)

    摘要:C語言是面向過程的編程語言,C++語言是面向?qū)ο蟮木幊陶Z言,雖然它們是兩種不同的程序設(shè)計語言,但是在基礎(chǔ)語法的實際應(yīng)用中既有相似之處,又有細微差別,尤其是在字符串與字符數(shù)組的混合使用及互相轉(zhuǎn)換過程中體現(xiàn)得更為明顯,這些差異是其底層實現(xiàn)過程不同所致。結(jié)合程序?qū)嵗姆治隹梢钥闯?,兩種語言在布爾數(shù)據(jù)類型、字符串處理、指針與引用的參數(shù)傳遞等相關(guān)應(yīng)用中的差異。

    關(guān)鍵詞:C語言;C++語言;實例分析

    0 引言

    C語言是面向過程的編程語言,C++語言是面向?qū)ο蟮木幊陶Z言,兩者之間有一些共同的特點——多種數(shù)據(jù)類型,豐富的運算符,運算靈活等。兩種語言在基礎(chǔ)語法上有相似之處,而在應(yīng)用上卻有細微的差別。本文就C語言和C++語言在邏輯值的計算、字符串處理、指針與引用方面的差異結(jié)合程序?qū)嵗敿毱饰觥?/p>

    1  C++布爾類型的本質(zhì)分析

    C語言沒有布爾類型(bool),C++語言有布爾類型。雖然C語言中沒有布爾類型,但是卻有邏輯運算和關(guān)系運算,也有邏輯真和邏輯假的概念[1],用1表示邏輯真,用0表示邏輯假。雖然C++語言有布爾類型,但是布爾值卻不是真正的邏輯值true和false,而是與C語言極為相似的表示方式——數(shù)值1和0分別表示邏輯真和假。因為邏輯值可以用數(shù)值1和0表示,所以C和C++的邏輯、關(guān)系運算并無本質(zhì)區(qū)別,應(yīng)用靈活。下面結(jié)合程序進行詳細分析。

    示例程序1:

    由于C++語言布爾類型變量的值是1(真)或0(假),所以布爾變量不僅可以進行邏輯、關(guān)系運算,還可以進行算術(shù)運算。例如程序1中的語句(1),就是邏輯值參與算術(shù)運算,關(guān)系運算8>=3的結(jié)果是邏輯值1,邏輯運算2&&-1的計算結(jié)果也是1,整個表達式1+2-1結(jié)果為整數(shù)2。此外,可以給布爾變量賦一個非零的整數(shù)(非0表示邏輯真),但是該布爾變量在參與運算時,其值不是所賦的整數(shù),而是1。因為它表示邏輯“真”,故當作1進行運算。例如程序1的語句(2)和(3),盡管變量x賦值為-2,但是2×x在計算時是2×1等于2,并非2×-2等于-4。關(guān)系表達式x>y等價于1>0,故關(guān)系成立,結(jié)果為“真”,值為1而并非0。

    C語言與C++語言的關(guān)系、邏輯運算與Java語言有本質(zhì)的不同。例如語句(4)和(5),表達式a

    2  C字符串與C++字符串的區(qū)別

    C++語言集成了C語言中字符串(簡稱C字符串)函數(shù),同時還擴展了字符串類string,所以,用C++語言編程時既可以使用C字符串的庫函數(shù),又可以使用string類的成員函數(shù)。當自定義函數(shù)的形式參數(shù)是string類的對象,而實際參數(shù)是C字符數(shù)組時,兩者類型不同,此時需要將C字符數(shù)組轉(zhuǎn)化為C++字符串string類的對象。具體的處理方式,我們通過以下示例程序來分析。

    示例程序2:

    標準C++中string類的構(gòu)造函數(shù)是string(const char *s);可以用C語言的字符串(或字符數(shù)組)構(gòu)造C++的string類對象(即C++字符串類string),例如程序2中的語句(1)正是此用。C++語言中的string類對象,可以使用重載運算符“+”進行字符串的連接,例如程序2中的語句(2),將字符串s2連接在字符串s1的末尾,并且不需考慮字符串s1是否能夠容納所有字符,因為string類的對象相當于動態(tài)數(shù)組,其內(nèi)存字節(jié)數(shù)會隨著字符串長度自動增加。然而,C語言的字符串連接卻不能使用“+”運算符連接,只能使用strcat()函數(shù),例如語句(4),前提條件是數(shù)組ps有足夠的長度可以容納字符串ps1的所有字符。此外,string類對象之間可以用比較運算符“==”“!=”直接進行大小關(guān)系的比較運算,如程序2中語句(5),也可以使用賦值運算符“=”將一個sring類對象直接賦值給另一個string對象,而C語言的字符數(shù)組是無法這般使用的。

    c_str()函數(shù)原型是const char *c_str();它是string類的成員函數(shù),返回一個以空字符結(jié)尾的字符串,即返回當前字符串的首地址,但是不能直接將該地址賦值給字符類型的指針,可以將當前字符串拷貝給一個長度合適的字符數(shù)組,例如語句(3)。s2是string類的對象,s2.c_str()是將C++字符串對象s2轉(zhuǎn)化為C字符串常量,并將該字符串常量通過C語言的字符串拷貝函數(shù)拷貝到長度合適的字符數(shù)組ps中。

    在用C++語言編程時,C字符串及庫函數(shù)和string類及成員函數(shù)可以混合使用,但是兩者有本質(zhì)的區(qū)別,C字符串是普通數(shù)據(jù)類型,要么是字符數(shù)組(char str[10]),要么是指向字符串的指針(char *str),內(nèi)存一旦分配,其長度是不能自動改變的,在進行字符串的連接、拷貝操作時一定要注意字符串的長度。C++字符串string是類,有豐富的成員函數(shù),使用格式是對象名.函數(shù)名();當C字符串和string的對象進行混合操作時,最好是將類型轉(zhuǎn)換為一致,盡可能避免C字符串與string類的對象直接計算。

    C++字符串并不以‘

    巴南区| 南江县| 乳山市| 古田县| 淮安市| 偏关县| 越西县| 孟连| 日土县| 浪卡子县| 象州县| 凤凰县| 红桥区| 临颍县| 玛沁县| 兴国县| 霍城县| 南投市| 楚雄市| 江安县| 吉隆县| 建水县| 全州县| 健康| 太仓市| 桐乡市| 巴塘县| 河间市| 洛宁县| 阿合奇县| 丹东市| 额济纳旗| 竹山县| 浮山县| 永修县| 德阳市| 天水市| 井陉县| 东山县| 台东市| 府谷县|