C語言與C++語言的區(qū)別_第1頁
C語言與C++語言的區(qū)別_第2頁
C語言與C++語言的區(qū)別_第3頁
C語言與C++語言的區(qū)別_第4頁
C語言與C++語言的區(qū)別_第5頁
已閱讀5頁,還剩24頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、C語言與語言與C+語言的區(qū)別語言的區(qū)別C語言與語言與C+語言的最主要區(qū)別語言的最主要區(qū)別o C是是面向過程面向過程的語言,的語言,C+是是面向?qū)ο竺嫦驅(qū)ο蟮恼Z的語言。言。o 因此,因此,C中沒有類的概念,全部代碼都包含中沒有類的概念,全部代碼都包含在函數(shù)中。在函數(shù)中。o C提供了大量的庫函數(shù):提供了大量的庫函數(shù):n 輸入輸出函數(shù):輸入輸出函數(shù):printf(), scanf(), n 動態(tài)內(nèi)存分配函數(shù):動態(tài)內(nèi)存分配函數(shù):malloc(), free(), n 內(nèi)存管理:內(nèi)存管理:memset(), memcpy(), n .C+程序與程序與C程序?qū)Ρ瘸绦驅(qū)Ρ?include using nam

2、espace std;int main()for (int i=0; i10; i+)coutHello!endl;return 0;#include int main() int i;for (i=0; i10; i+)printf (Hello!n);return 0;C+CC語言與語言與C+語言的區(qū)別語言的區(qū)別o 變量定義位置變量定義位置o 結(jié)構(gòu)體變量結(jié)構(gòu)體變量o 數(shù)據(jù)類型數(shù)據(jù)類型o 輸入輸出輸入輸出o 動態(tài)內(nèi)存分配動態(tài)內(nèi)存分配o 其他區(qū)別其他區(qū)別1. 變量變量定義位置定義位置o C89要求所有變量都必須定義在塊的最前部要求所有變量都必須定義在塊的最前部o C+沒有這個要求,可以在程序任

3、意位置沒有這個要求,可以在程序任意位置定義新的變量定義新的變量2. 結(jié)構(gòu)體結(jié)構(gòu)體變量變量o 在在C+中,中,struct結(jié)構(gòu)體支持成員函數(shù)的結(jié)構(gòu)體支持成員函數(shù)的定義,定義,C中不行中不行。o 如果在如果在C的的struct中定義函數(shù),編譯時會顯中定義函數(shù),編譯時會顯示一個示一個“field function name declared as function”錯誤錯誤2. 結(jié)構(gòu)體結(jié)構(gòu)體變量(續(xù))變量(續(xù))/*ch3_10.c */struct Aint a;int b();int main()struct A c;c.a=2;return 0;編譯錯誤:編譯錯誤:“ch3_10.c:5: er

4、ror: field b declared as a function”C+標(biāo)準(zhǔn)可以通過編譯標(biāo)準(zhǔn)可以通過編譯2. 結(jié)構(gòu)體結(jié)構(gòu)體變量(續(xù))變量(續(xù))o 在在C語言中,聲明一個結(jié)構(gòu)體類型語言中,聲明一個結(jié)構(gòu)體類型A之后,之后,使用下面的語句來定義結(jié)構(gòu)體變量使用下面的語句來定義結(jié)構(gòu)體變量a:n struct A a;o 而而C+語言中可以省略語言中可以省略struct3. 數(shù)據(jù)類型數(shù)據(jù)類型o C+中有中有bool (或或boolean類型);類型);o C中沒有這樣的中沒有這樣的bool類型,均為數(shù)值類型!類型,均為數(shù)值類型!o C編譯器不能通過編譯,編譯器不能通過編譯,C+編譯器可以編譯器可以bo

5、ol a;a = 1;4. 輸入輸出輸入輸出 o C中使用中使用printf、scanf輸入輸出輸入輸出o 使用時必須包含使用時必須包含stdio.h頭文件頭文件int a;scanf( %d, &a );printf( 您輸入的數(shù)值是您輸入的數(shù)值是%dn, a );A. scanf()函數(shù)函數(shù)o 功能:功能:n 從鍵盤讀入指定格式的數(shù)據(jù)從鍵盤讀入指定格式的數(shù)據(jù)o 格式:格式:n scanf( 控制字符串控制字符串, 輸入項列表輸入項列表 );o 注意:注意:n scanf中各變量一定是表示地址的標(biāo)識符中各變量一定是表示地址的標(biāo)識符(加加&)控制字符串控制字符串o 控制字符串有

6、兩部分組成:控制字符串有兩部分組成:n 格式說明格式說明o 形式:形式:n %n 普通字符普通字符o 空格空格o 可打印字符可打印字符格式說明格式說明o 各格式字符及其意義:(詳見各格式字符及其意義:(詳見C教程)教程)nd:輸入一個十進(jìn)制整數(shù):輸入一個十進(jìn)制整數(shù)no:輸入一個八進(jìn)制整數(shù):輸入一個八進(jìn)制整數(shù)nx:輸入一個十六進(jìn)制整數(shù):輸入一個十六進(jìn)制整數(shù)nf:輸入一個小數(shù)形式的浮點(diǎn)數(shù):輸入一個小數(shù)形式的浮點(diǎn)數(shù)ne:輸入一個指數(shù)形式的浮點(diǎn)數(shù):輸入一個指數(shù)形式的浮點(diǎn)數(shù)nc:輸入一個字符:輸入一個字符ns:輸入一個字符串:輸入一個字符串空格空格o 在多個輸入時,一般用空格或回車作為分隔在多個輸入時,

7、一般用空格或回車作為分隔符符o 若以空格作為分隔符,當(dāng)輸入中包含字符類若以空格作為分隔符,當(dāng)輸入中包含字符類型時,可能產(chǎn)生非預(yù)期的結(jié)果型時,可能產(chǎn)生非預(yù)期的結(jié)果scanf ( %d%c, &a, &ch );輸入:輸入:45 q輸出:輸出:45 空格空格空格(續(xù))空格(續(xù))o 如下語句會有正確輸出如下語句會有正確輸出o 此處此處%d后的空格,就可以跳過字符后的空格,就可以跳過字符q前前的所有空格的所有空格scanf ( %d %c, &a, &ch );輸入:輸入:45 q輸出:輸出:45 q可打印字符可打印字符o 看一個例子看一個例子o 輸入為:輸入為:1,2

8、,qo 可以得到可以得到 a = 1, b = 2, ch = qo 輸入為:輸入為:1 2 qo 除除a的值為的值為1外,外,對對b與與ch的賦值失敗的賦值失敗scanf ( %d,%d,%c, &a, &b, &ch );B. printf()函數(shù)函數(shù)o 功能:功能:n 從缺省輸出設(shè)備(一般為顯示器)輸出規(guī)定格從缺省輸出設(shè)備(一般為顯示器)輸出規(guī)定格式的字符串式的字符串o 格式:格式:n printf( 控制字符串控制字符串, 輸入項列表輸入項列表 );控制字符串控制字符串o 控制字符串有兩部分組成:控制字符串有兩部分組成:n 格式說明格式說明o 形式:形式:n %

9、n 普通字符普通字符o 空格空格o 可打印字符可打印字符格式說明格式說明o 各格式字符及其意義:(詳見各格式字符及其意義:(詳見C教程)教程)nc:按字符型輸出:按字符型輸出no:按八進(jìn)制輸出:按八進(jìn)制輸出nd:按十進(jìn)制輸出:按十進(jìn)制輸出nx:按十六進(jìn)制輸出:按十六進(jìn)制輸出nu:按無符號整數(shù)輸出:按無符號整數(shù)輸出nf:按浮點(diǎn)型小數(shù)輸出:按浮點(diǎn)型小數(shù)輸出ng:按:按e和和f格式中較短的一種輸出格式中較短的一種輸出ne:按科學(xué)計數(shù)法輸出:按科學(xué)計數(shù)法輸出普通字符普通字符o 普通字符:普通字符:n 可打印字符可打印字符o 主要是說明字符,按原樣輸出,支持漢字輸出主要是說明字符,按原樣輸出,支持漢字輸

10、出n 轉(zhuǎn)義字符(例)轉(zhuǎn)義字符(例)o 不能直接打印,控制產(chǎn)生特殊的輸出效果不能直接打印,控制產(chǎn)生特殊的輸出效果普通字符(續(xù))普通字符(續(xù))o 轉(zhuǎn)義字符示例轉(zhuǎn)義字符示例i = 789,n = 123, a = 92.34567,且,且i為整型,為整型,n為長整型。為長整型。 printf( %4dt%7.4fnt%lun, i, a, n );輸出為:輸出為: 78992.3457 123C語言輸入輸出總結(jié)語言輸入輸出總結(jié)o 輸入輸出可能是輸入輸出可能是C和和C+的最明顯的區(qū)別的最明顯的區(qū)別n C中用中用scanf(), printf()來完成輸入輸出操作來完成輸入輸出操作n C+中全局對象中全

11、局對象cin、cout來輸入輸出,比來輸入輸出,比C更方便,而且類型檢查機(jī)制更加完善更方便,而且類型檢查機(jī)制更加完善o C+中的使用方式中的使用方式nnew申請申請ndelete釋放釋放o C中的使用方式中的使用方式nmalloc()申請申請nfree()釋放釋放5. 動態(tài)內(nèi)存分配動態(tài)內(nèi)存分配o 函數(shù)原型:函數(shù)原型:nvoid *malloc( long size );o 作用:作用:n在對內(nèi)存中分配在對內(nèi)存中分配size各字節(jié),并返回了指向這各字節(jié),并返回了指向這塊內(nèi)存首地址的指針塊內(nèi)存首地址的指針n如果分配失敗,返回如果分配失敗,返回NULLo 返回指針為返回指針為void*型的,要強(qiáng)制轉(zhuǎn)

12、換型的,要強(qiáng)制轉(zhuǎn)換A. malloc()函數(shù)函數(shù)o 函數(shù)原型:函數(shù)原型:nvoid free( void *FirstByte );o 作用:作用:n將之前用將之前用malloc申請的空間歸還操作系統(tǒng)申請的空間歸還操作系統(tǒng)n否則就導(dǎo)致內(nèi)存泄漏否則就導(dǎo)致內(nèi)存泄漏o 編譯器不會發(fā)現(xiàn)內(nèi)存泄漏這樣的錯誤編譯器不會發(fā)現(xiàn)內(nèi)存泄漏這樣的錯誤B. free()函數(shù)函數(shù)C. 函數(shù)的用法函數(shù)的用法/*例例 3-11*/#include #include int main()int* p;if(p = (int*)malloc(sizeof(int) = NULL )printf(動態(tài)內(nèi)存分配失敗動態(tài)內(nèi)存分配失敗n);exit(1);C. 函數(shù)的用法(續(xù))函數(shù)的用法(續(xù))*p = 100;printf(%dn, *p);free(p);p = NULL;return 0;o 頭文件:頭文件:nmalloc和和free被頭文件被頭文件stdlib.h包含包含nC+中中new和和delete為關(guān)鍵字,故無需頭文為關(guān)鍵字,故無需頭文件包含件包含o 使用:使用:nint *p=(int*)malloc(

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論