C++面向?qū)ο蟪绦蛟O(shè)計(jì)課件_第1頁
C++面向?qū)ο蟪绦蛟O(shè)計(jì)課件_第2頁
C++面向?qū)ο蟪绦蛟O(shè)計(jì)課件_第3頁
C++面向?qū)ο蟪绦蛟O(shè)計(jì)課件_第4頁
C++面向?qū)ο蟪绦蛟O(shè)計(jì)課件_第5頁
已閱讀5頁,還剩634頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

C++面向?qū)ο蟪淌皆O(shè)計(jì)

第一章緒論面向?qū)ο笏枷氲挠蓙砻嫦驅(qū)ο蟪淌皆O(shè)計(jì)面向?qū)ο蟪淌皆O(shè)計(jì)語言C++與C語言的關(guān)係§1.1面向?qū)ο笏枷氲挠蓙?/p>

面向?qū)ο蠹夹g(shù)追求的是軟體系統(tǒng)對(duì)現(xiàn)實(shí)世界的直接模擬,儘量實(shí)現(xiàn)將現(xiàn)實(shí)世界中的事物直接映射到軟體系統(tǒng)的解空間。§1.1面向?qū)ο笏枷氲挠蓙憩F(xiàn)實(shí)問題空間面向?qū)ο蠼饪臻g物質(zhì):一輛白色的自行車意識(shí):自行車具體事物:一個(gè)對(duì)象——自行車的實(shí)例抽象概念:自行車類§1.2面向?qū)ο蟪淌皆O(shè)計(jì)一、結(jié)構(gòu)化程式設(shè)計(jì)(SP,StructureProgramming)結(jié)構(gòu)化程式設(shè)計(jì)思路是:自頂向下,逐步求精;其程式結(jié)構(gòu)是按功能劃分若干個(gè)基本模組,這些模組形成一個(gè)樹狀結(jié)構(gòu);各模組之間的關(guān)係盡可能簡單,在功能上相對(duì)獨(dú)立;每一模組內(nèi)部均是由順序、選擇和迴圈三種基本結(jié)構(gòu)組成;其模組化實(shí)現(xiàn)的具體方法是使用副程式。§1.2面向?qū)ο蟪淌皆O(shè)計(jì)一、結(jié)構(gòu)化程式設(shè)計(jì)(SP,StructureProgramming)例如:計(jì)算一個(gè)班中所有學(xué)生電腦的平均成績,按照結(jié)構(gòu)化程式設(shè)計(jì)的思想,可以將其拆分為以下的子任務(wù):找出一名學(xué)生的電腦成績計(jì)算共有多少名學(xué)生計(jì)算此科目的單科總分用學(xué)生總數(shù)去除單科總成績★找出一個(gè)學(xué)生的檔案★讀出電腦的分?jǐn)?shù)★把此分?jǐn)?shù)加到部分和上★讀出下一名學(xué)生的檔案§1.2面向?qū)ο蟪淌皆O(shè)計(jì)一、結(jié)構(gòu)化程式設(shè)計(jì)(SP,StructureProgramming)缺點(diǎn)結(jié)構(gòu)化程式設(shè)計(jì)把數(shù)據(jù)和過程分離為相互獨(dú)立的實(shí)體,程式員在編程時(shí)必須考慮所要處理數(shù)據(jù)的格式。對(duì)於不同的數(shù)據(jù)格式即使要做同樣的處理或相同的數(shù)據(jù)格式要做不同的處理都需要編寫不同的程式。因此結(jié)構(gòu)化程式的可重用性不好。而且數(shù)據(jù)與程式始終保持相容也成為程式員的一個(gè)負(fù)擔(dān)?!?.2面向?qū)ο蟪淌皆O(shè)計(jì)二、面向?qū)ο蟪淌皆O(shè)計(jì)(OOP,Object-OrientedProgramming)優(yōu)點(diǎn)1面向?qū)ο蟪淌皆O(shè)計(jì)將數(shù)據(jù)及對(duì)數(shù)據(jù)的操作放在一起,作為一個(gè)相互依存,不可分割的整體來處理,即對(duì)象。它採用數(shù)據(jù)抽象和資訊隱藏技術(shù)。它將對(duì)象及對(duì)象的操作抽象成一種新的數(shù)據(jù)類型——類,並且考慮不同對(duì)象之間的聯(lián)繫和對(duì)象類的重要性。1.面向?qū)ο蟪淌皆O(shè)計(jì)的優(yōu)越性§1.2面向?qū)ο蟪淌皆O(shè)計(jì)二、面向?qū)ο蟪淌皆O(shè)計(jì)(OOP,Object-OrientedProgramming)自行車對(duì)象數(shù)據(jù)抽象自行車類屬性:架子尺寸車輪尺寸顏色原材料操作:轉(zhuǎn)彎移動(dòng)修理§1.2面向?qū)ο蟪淌皆O(shè)計(jì)二、面向?qū)ο蟪淌皆O(shè)計(jì)(OOP,Object-OrientedProgramming)優(yōu)點(diǎn)2面向?qū)ο蟪淌皆O(shè)計(jì)的優(yōu)越性還表現(xiàn)在,它有希望解決軟體工程的兩個(gè)主要問題——軟體複雜性和軟體生產(chǎn)率的提高。此外它還符合人類的思維習(xí)慣,能夠自然地表現(xiàn)現(xiàn)實(shí)世界的實(shí)體和問題,它對(duì)軟體開發(fā)過程具有重要意義。1.面向?qū)ο蟪淌皆O(shè)計(jì)的優(yōu)越性§1.2面向?qū)ο蟪淌皆O(shè)計(jì)二、面向?qū)ο蟪淌皆O(shè)計(jì)(OOP,Object-OrientedProgramming)2.面向?qū)ο蟪淌皆O(shè)計(jì)的幾個(gè)重要概念封裝和數(shù)據(jù)隱藏繼承和重用多態(tài)性§1.2面向?qū)ο蟪淌皆O(shè)計(jì)二、面向?qū)ο蟪淌皆O(shè)計(jì)(OOP,Object-OrientedProgramming)封裝和數(shù)據(jù)隱藏:C++通過建立用戶自定義類型(類)支持封裝性和數(shù)據(jù)隱藏。完好定義的類一旦建立,就可看成是完全封裝的實(shí)體,可以作為一個(gè)整體單元使用。類的實(shí)際內(nèi)部工作應(yīng)當(dāng)隱藏起來,使用完好定義的類的用戶不需要知道類是如何工作的,只要知道如何使用它就行?!?.2面向?qū)ο蟪淌皆O(shè)計(jì)二、面向?qū)ο蟪淌皆O(shè)計(jì)(OOP,Object-OrientedProgramming)繼承和重用:C++採用繼承支持重用的思想,程式可以在擴(kuò)展現(xiàn)有類型的基礎(chǔ)上聲明新類型。新子類是從現(xiàn)有類型派生出來的,稱為派生類。開發(fā)者在設(shè)計(jì)軟體時(shí)可以利用一些已經(jīng)被精心設(shè)計(jì)好並且經(jīng)過測試的代碼,這些可重用的代碼被組織和存放在程式設(shè)計(jì)環(huán)境的類庫中。高質(zhì)量的可重用代碼能有效地降低軟體複雜度和提高開發(fā)效率。§1.2面向?qū)ο蟪淌皆O(shè)計(jì)二、面向?qū)ο蟪淌皆O(shè)計(jì)(OOP,Object-OrientedProgramming)多態(tài)性:C++通過繼承的方法構(gòu)造類,採用多態(tài)性為每個(gè)類指定表現(xiàn)行為。大學(xué)生中學(xué)生繼承計(jì)算成績計(jì)算成績語文數(shù)學(xué)英語…高等數(shù)學(xué)電腦普通物理…§1.2面向?qū)ο蟪淌皆O(shè)計(jì)二、面向?qū)ο蟪淌皆O(shè)計(jì)(OOP,Object-OrientedProgramming)多態(tài)性:C++通過繼承的方法構(gòu)造類,採用多態(tài)性為每個(gè)類指定表現(xiàn)行為。

☆繼承性和多態(tài)性的組合,可以輕易生成一系列雖類似但獨(dú)一無二的對(duì)象。由於繼承性,這些對(duì)象共用許多相似的特徵。但由於多態(tài)性,一個(gè)對(duì)象可以有獨(dú)特的表現(xiàn)方式,面對(duì)另一個(gè)對(duì)象有另一個(gè)表現(xiàn)方式?!?.3面向?qū)ο蟪淌皆O(shè)計(jì)語言LISP家族SimulaSmalltalkC家族LISP家族SimulaSmalltalkC家族LISP是50年代開發(fā)出來的一種語言,它以表處理為特色,是一種人工智慧語言。Simula是60年代開發(fā)出來的,在Simula中引入了幾個(gè)面向?qū)ο蟪淌皆O(shè)計(jì)語言中最重要的概念和特性,即數(shù)據(jù)抽象的概念、類和繼承性。Smalltalk起源於Simula語言,是一個(gè)真正的面向?qū)ο蟪淌秸Z言,它體現(xiàn)了純粹的面向?qū)ο蟮脑O(shè)計(jì)思想,是最純的面向?qū)ο蟪淌秸Z言。

在80年代,C語言成為一種及其流行、非常廣泛的語言。為了滿足管理程式的複雜性需要,1980年,貝爾實(shí)驗(yàn)室的BjarneStroustrup開始對(duì)C進(jìn)行改進(jìn)和擴(kuò)充。最初的成果稱為“帶類的C”,1983年正式取名為C++,在經(jīng)曆了三次C++修訂後,於1994年制定了ANSIC++標(biāo)準(zhǔn)的草案。以後又經(jīng)過不斷完善,成為目前的C++。MSC++TurboC++BorlandC++VisualC++§1.4C++與C語言的關(guān)係一、C語言的局限1.C類型檢查機(jī)制相對(duì)較弱,這使得程式中的一些錯(cuò)誤不能在編譯時(shí)發(fā)現(xiàn)。2.C本身幾乎沒有支持代碼重用的語言結(jié)構(gòu),因此一個(gè)程式員精心設(shè)計(jì)的程式,很難為其他程式所用。3.當(dāng)程式的規(guī)模達(dá)到一定的程度時(shí),程式員很難控制程式的複雜性。§1.4C++與C語言的關(guān)係二、C++與C語言的關(guān)係1.C++保持與C語言的相容這種相容性表現(xiàn)在許多C語言編寫的程式不經(jīng)修改就可以為C++所用,用C語言編寫的許多庫函數(shù)和應(yīng)用軟體也都可以用於C++。§1.4C++與C語言的關(guān)係二、C++與C語言的關(guān)係2.C++對(duì)C語言做了許多改進(jìn)①增加了一些新的運(yùn)算符,使得C++應(yīng)用起來更方便。例如:::newdelete.*->*等?!?.4C++與C語言的關(guān)係二、C++與C語言的關(guān)係2.C++對(duì)C語言做了許多改進(jìn)②改進(jìn)了類型系統(tǒng),增加了安全性,C語言中的類型轉(zhuǎn)換很不嚴(yán)格。C++規(guī)定類型轉(zhuǎn)換多採取強(qiáng)制轉(zhuǎn)換,又規(guī)定函數(shù)的說明必須用原型,並對(duì)默認(rèn)類型做了某些限制,還增強(qiáng)了編譯系統(tǒng)檢查類型的能力。§1.4C++與C語言的關(guān)係二、C++與C語言的關(guān)係2.C++對(duì)C語言做了許多改進(jìn)③引進(jìn)了引用概念,使用引用作函數(shù)參數(shù)帶來很大方便。§1.4C++與C語言的關(guān)係二、C++與C語言的關(guān)係2.C++對(duì)C語言做了許多改進(jìn)④允許函數(shù)重載,允許設(shè)置默認(rèn)參數(shù),這些措施提高了編程的靈活性,減少冗餘性。又引進(jìn)了內(nèi)聯(lián)函數(shù)的概念,提高了程式的效率。§1.4C++與C語言的關(guān)係二、C++與C語言的關(guān)係2.C++對(duì)C語言做了許多改進(jìn)⑤對(duì)變數(shù)說明更加靈活了。C語言只允許在函數(shù)體或分程式內(nèi),先是對(duì)變數(shù)的說明語句,再是執(zhí)行語句,兩者不可交叉引用。C++打破這一限制,可以根據(jù)需要隨時(shí)對(duì)變數(shù)加以說明?!?.4C++與C語言的關(guān)係二、C++與C語言的關(guān)係3.C++與C語言的本質(zhì)差別C++面向?qū)ο蟮恼Z言C語言面向過程的語言§1.4C++與C語言的關(guān)係二、C++與C語言的關(guān)係4.C++面向?qū)ο蟮男绿匦寓貱++支持?jǐn)?shù)據(jù)封裝數(shù)據(jù)封裝類對(duì)象工具支持實(shí)現(xiàn)具體§1.4C++與C語言的關(guān)係二、C++與C語言的關(guān)係4.C++面向?qū)ο蟮男绿匦寓?/p>

C++類中包含私有、公有和保護(hù)成員私有成員只有在類中說明的函數(shù)才能訪問公有成員類外的函數(shù)也可以訪問保護(hù)成員只有該類的派生類才能訪問§1.4C++與C語言的關(guān)係二、C++與C語言的關(guān)係4.C++面向?qū)ο蟮男绿匦寓?/p>

C++通過發(fā)送消息來處理對(duì)象每個(gè)對(duì)象對(duì)接收到的消息給出一個(gè)相應(yīng)的方法予以回應(yīng)。方法在類定義中使用函數(shù)來定義,在C++中使用一種類似於函數(shù)調(diào)用的機(jī)制把消息發(fā)送到一個(gè)對(duì)象上。§1.4C++與C語言的關(guān)係二、C++與C語言的關(guān)係4.C++面向?qū)ο蟮男绿匦寓?/p>

C++允許使用友元破壞封裝性類中的私有成員是不允許類外面的任何函數(shù)訪問的,但是友元打破了這種封裝性。§1.4C++與C語言的關(guān)係二、C++與C語言的關(guān)係4.C++面向?qū)ο蟮男绿匦寓?/p>

C++允許函數(shù)名和運(yùn)算符重載函數(shù)名重載和運(yùn)算符重載都屬於多態(tài)性。多態(tài)性是指相同的語言結(jié)構(gòu)可以代表不同類型的實(shí)體或者對(duì)不同類型的實(shí)體進(jìn)行操作,C++支持多態(tài)性?!?.4C++與C語言的關(guān)係二、C++與C語言的關(guān)係4.C++面向?qū)ο蟮男绿匦寓?/p>

C++支持繼承性一個(gè)類可以根據(jù)需要生成派生類(或子類)。派生類繼承了基類的所有方法,另外派生類自身還可以定義所需要的不包含在父類中的新方法?!?.4C++與C語言的關(guān)係二、C++與C語言的關(guān)係4.C++面向?qū)ο蟮男绿匦寓?/p>

C++支持動(dòng)態(tài)聯(lián)編

C++可以通過定義虛函數(shù)來支持動(dòng)態(tài)聯(lián)編。動(dòng)態(tài)聯(lián)編是多態(tài)性的一個(gè)重要特徵。第二章C++語言初步初識(shí)C++程式C++語言的基本符號(hào)C++語言的辭彙C++程式的基本框架運(yùn)行C++程式C++的運(yùn)行環(huán)境第二章C++語言初步§2.1初識(shí)C++程式一、程式實(shí)例//*************************//**thisisasimplestprogram**//*************************#include<iostream.h>voidmain(){cout<<“Iamastudent.\n”;}運(yùn)行結(jié)果為:

Iamastudent.注釋編譯預(yù)處理程式主體第二章C++語言初步§2.1初識(shí)C++程式一、程式實(shí)例注釋編譯預(yù)處理程式主體序言注釋注解性注釋用於程式開頭,說明程式或檔的名稱、用途、編寫時(shí)間、編寫人以及輸入輸出說明等。用於程式中難懂的地方。C++的注釋為“//”之後的內(nèi)容,直到換行。另外還相容C的注釋,即“/*…*/”,可以佔(zhàn)用多行。在生成可執(zhí)行程式前,C++忽略注釋,把每個(gè)注釋都視為一個(gè)空格。第二章C++語言初步§2.1初識(shí)C++程式一、程式實(shí)例注釋編譯預(yù)處理程式主體

每個(gè)以符號(hào)“#”開頭的行,稱為編譯預(yù)處理行。如:

#include<iostream.h>作用是在編譯之前將檔iostream.h的內(nèi)容增加到程式中,以作為其一部分。

iostream.h是系統(tǒng)定義的一個(gè)“頭檔”,它設(shè)置了C++的I/O相關(guān)環(huán)境,定義輸入輸出流對(duì)象cout和cin等。第二章C++語言初步§2.1初識(shí)C++程式一、程式實(shí)例注釋編譯預(yù)處理程式主體voidmain(){cout<<“Iamastudent.\n”;}main()表示主函數(shù),每一個(gè)C++程式都必須有一個(gè)main()函數(shù),main()作為程式的入口。void表示該main()函數(shù)沒有返回值函數(shù)體第二章C++語言初步§2.1初識(shí)C++程式一、程式實(shí)例注釋編譯預(yù)處理程式主體voidmain(){cout<<“Iamastudent.\n”;}函數(shù)頭函數(shù)體+=函數(shù)定義描述一個(gè)函數(shù)所執(zhí)行演算法的過程稱為函數(shù)定義。第二章C++語言初步§2.1初識(shí)C++程式一、程式實(shí)例注釋編譯預(yù)處理程式主體voidmain(){cout<<“Iamastudent.\n”;}

main——函數(shù)名全為小寫字母構(gòu)成,C++程式中的名字是大小些“敏感”的。

cout——標(biāo)準(zhǔn)輸出的流設(shè)備,它是C++預(yù)定的對(duì)象。當(dāng)程式要在設(shè)備上進(jìn)行輸出時(shí),就需要在程式中指定對(duì)象。

<<——輸出操作符,表示將該操作符右邊的數(shù)據(jù)送到顯示設(shè)備上。

程式中用雙括弧括起的數(shù)據(jù)“Iamastudent.\n”稱為字串常量。;表示一個(gè)語句的結(jié)束/(反斜杠)——稱為轉(zhuǎn)義符,表示要輸出特殊字元。字串中遇到反斜杠時(shí),下一個(gè)字元與反斜杠相結(jié)合,形成轉(zhuǎn)義序列。轉(zhuǎn)義序列說明\n\t\r\a\\\”換行符,使螢?zāi)挥螛?biāo)移到螢?zāi)恢邢乱恍虚_頭水準(zhǔn)跳位字元,使游標(biāo)移到下一製錶位回車符,使游標(biāo)移到當(dāng)前行開頭警告,發(fā)出系統(tǒng)警告聲音列印反斜杠符列印雙引號(hào)相關(guān)鏈接:編程技巧:1.

讓函數(shù)列印的最後一個(gè)字元為換行符\n,可以保證函數(shù)使螢?zāi)挥螛?biāo)移到螢?zāi)幌乱恍虚_頭。這種習(xí)慣能促進(jìn)軟體複用,這是軟體開發(fā)環(huán)境中的關(guān)鍵目標(biāo)。2.將每個(gè)函數(shù)的整個(gè)函數(shù)體在定義函數(shù)體的花括弧中縮排一級(jí),可使程式的函數(shù)結(jié)構(gòu)更加明顯,使程式更易讀?!?.1初識(shí)C++程式二、I/O語句1.標(biāo)準(zhǔn)輸出語句當(dāng)程式需要在螢?zāi)簧巷@示輸出時(shí),可以使用插入操作符“<<”向cout中插入字元。cout<<“Iamastudent.”;#include<iostream.h>voidmain(){cout<<“MynameisJone.\n”;cout<<“theIDis”;cout<<2;cout<<endl;}§2.1初識(shí)C++程式二、I/O語句1.標(biāo)準(zhǔn)輸出語句cout<<“MynameisJone.\n”;<<“theIDis”;<<2;<<endl;cout<<“MynameisJone.\n”<<“theIDis”<<2<<endl;§2.1初識(shí)C++程式二、I/O語句2.標(biāo)準(zhǔn)輸入語句

cin與cout類似,是標(biāo)準(zhǔn)輸入檔(指鍵盤)的名字?!?gt;>”稱為提取運(yùn)算符。cin可自動(dòng)識(shí)別變數(shù)位置和類型。例如:cin>>palstring;inti;floatf;longl;cin>>i>>f>>l;定義一個(gè)整型變數(shù)定義一個(gè)浮點(diǎn)型變數(shù)定義一個(gè)長整型變數(shù)cin能夠知道抽取的變數(shù)的類型§2.1初識(shí)C++程式二、I/O語句3.使用控制符⑴setw(n):控制輸出間隔。①如果一個(gè)值需要比setw(n)確定的字符數(shù)更多的字元,則該值將使用它所需要的所有字元。說明floatamount=3.14159;cout<<setw(4)<<amount<<endl;運(yùn)算結(jié)果為:3.14159§2.1初識(shí)C++程式二、I/O語句3.使用控制符⑴setw(n):控制輸出間隔。②如果一個(gè)值的字元數(shù)比setw(n)確定的字元數(shù)少,則在數(shù)字字元前顯示空白。說明cout<<setw(8)<<10<<endl;運(yùn)算結(jié)果為:10﹄︼︼︼§2.1初識(shí)C++程式二、I/O語句3.使用控制符⑴setw(n):控制輸出間隔。③setw(n)僅影響與之相鄰的下一個(gè)數(shù)的輸出,並不保留效力。說明cout<<setw(8)<<10<<20<<endl;運(yùn)算結(jié)果為:1020﹄︼︼︼cout<<setw(8)<<10<<setw(8)<<20<<endl;運(yùn)算結(jié)果為:1020﹄︼︼︼§2.1初識(shí)C++程式二、I/O語句3.使用控制符⑵setfill:用來確定一個(gè)非空格的字元。#include<iostream.h>#include<iomanip.h>voidmain(){cout<<setfill(’*’);<<setw(2)<<21<<endl<<setw(3)<<21<<endl<<setw(4)<<21<<endl;cout<<setfill(’’);}運(yùn)行結(jié)果為:21*21**21§2.1初識(shí)C++程式二、I/O語句4.printf和scanf如果採用標(biāo)準(zhǔn)輸出函數(shù)printf()和輸入函數(shù)scanf(),則應(yīng)把程式開始的預(yù)處理指令改為:#include<stdio.h>§2.2C++語言的基本符號(hào)一、基本符號(hào)分類每種語言都用一組字元來構(gòu)造有意義的語句。C++程式是用下列字元所組成的字元寫成的:大小寫英文字母:a~z,A~Z數(shù)字字元:0~9特殊字元:空格!#%^&*_(下劃線)

-+=~<>/\|.,:;?’”()[]{}$@§2.2C++語言的基本符號(hào)二、基本符號(hào)的ASCII編碼P31例:charcl=‘a(chǎn)’;inti=cl;cout<<cl<<endl<<i;輸出結(jié)果:a97§2.3C++語言的辭彙一、關(guān)鍵字(保留字)關(guān)鍵字是一類有特定的專門含義的單詞。在程式中用到的其他名字(識(shí)別字)不能與C/C++的關(guān)鍵字有相同的拼法和大小寫。關(guān)鍵字也不能重新定義。注§2.3C++語言的辭彙一、關(guān)鍵字(保留字)①C++的關(guān)鍵字一般包含了幾乎所有的C語言的關(guān)鍵字說明

②C++的關(guān)鍵字集是在不斷變化的③不同版本的C++的關(guān)鍵字集可能不同補(bǔ)充:基本關(guān)鍵字表asmautobreakcasecatchcharclassconstcontinuedefaultdeletedodoubleelseenumexternfloatforfriendgotoifinlineintlongnewoperatorprivateprotectedpublicregisterreturnshortsignedsizeofstaticstructswitchtemplatethisthrowtrytupedefunionunsignedvirtualvoidvolatilewhile§2.3C++語言的辭彙二、識(shí)別字識(shí)別字是由程式員為程式中的各種成份——變數(shù),有名常量,用戶定義的類型,枚舉類型的值,函數(shù)及其參數(shù),類,對(duì)象等所起的名字。說明識(shí)別字必須符合以下規(guī)則:§2.3C++語言的辭彙識(shí)別字必須符合的規(guī)則:1.不能是C++關(guān)鍵字,如for,if,case等不可作識(shí)別字;2.識(shí)別字中字母區(qū)分大小寫,如Abc與abc被認(rèn)為是兩個(gè)不同的識(shí)別字。而關(guān)鍵字不區(qū)分大小寫,如for,F(xiàn)OR,F(xiàn)or,foR都認(rèn)為是同一關(guān)鍵字;3.第一個(gè)字元必須是字母或下劃線;§2.3C++語言的辭彙識(shí)別字必須符合的規(guī)則:4.不要太長,一般不超過31個(gè)字元為宜(太長則書寫困難,反為不美);5.不能以數(shù)字開頭。如C5合法,而5C則為非法;6.中間不能有空格。如map合法,而map則為非法;§2.3C++語言的辭彙識(shí)別字必須符合的規(guī)則:7.變數(shù)名不能包含.;,”’+-之類的特殊符號(hào)。實(shí)際上,識(shí)別字中除了能使用26個(gè)英文字母的大小寫和數(shù)字之外,只能使用下劃線_。numberOfStudentnumOfStudentDx6y命名的方式?jīng)Q定了程式書寫的風(fēng)格補(bǔ)充:介紹幾種常用的命名方式1.駱駝表示法:mycarmy-carmyCar易讀,但是下劃線書寫困難識(shí)別字中不能出現(xiàn)空格補(bǔ)充:介紹幾種常用的命名方式2.匈牙利標(biāo)記法:iMycaripMycar表示整型指針變數(shù)表示整型變數(shù)在每個(gè)變數(shù)名的前面加上若干表示類型的字元§2.3C++語言的辭彙三、字面常量

常量:C++程式中的常量是指固定不變的量。字面常量有名常量例如:圓周率pai=3.1416Int型常量float型常量char型常量字串常量§2.3C++語言的辭彙三、字面常量即整型常量,可用3種形式表示:⑴Int型常量:①十進(jìn)位整數(shù)。如123,-456,0,79834等。如果某個(gè)整數(shù)超出了一般整數(shù)的表示範(fàn)圍,系統(tǒng)可自動(dòng)按長整型(longint)來處理。如79834L表示長整型。若此字面整數(shù)超出了長整型範(fàn)圍,系統(tǒng)將發(fā)出警告。注§2.3C++語言的辭彙三、字面常量即整型常量,可用3種形式表示:⑴Int型常量:②八進(jìn)制整數(shù)以零開頭的整數(shù)表示八進(jìn)制整數(shù)。如0123,表示(123)8。§2.3C++語言的辭彙三、字面常量即整型常量,可用3種形式表示:⑴Int型常量:③十六進(jìn)制整數(shù)以零和字母x開頭或以零和字母X開頭的整數(shù)表示十六進(jìn)制整數(shù)。如0x123或0X123,表示(123)16。§2.3C++語言的辭彙三、字面常量即實(shí)型常量,實(shí)數(shù)在C++中就是浮點(diǎn)數(shù)。實(shí)數(shù)有2種表示:⑵float型常量:①定點(diǎn)數(shù)形式:如0.123,.456,0.0等。②指數(shù)形式:如123e5,123E5都表示123×105?!?.3C++語言的辭彙三、字面常量⑵float型常量:單精確度(float)48f或F尾碼34.5f雙精度(double)810默認(rèn)34.5長雙精度(longdouble)1019l或L尾碼34.5e2L種類佔(zhàn)用記憶體有效數(shù)字表示形式舉例§2.3C++語言的辭彙三、字面常量即字元常量,是用單引號(hào)括起來的一個(gè)字元。如‘a(chǎn)’,‘?’等。⑶char型常量:

C++還允許使用一種特殊形式的字元常量,即以“\”開頭的字元序列,如‘\n’。注0表示一個(gè)整數(shù)值‘0’表示一個(gè)數(shù)字字元,其ASCII碼等於48或0x30?!?.3C++語言的辭彙三、字面常量即用雙引號(hào)括起來的字元序列。⑷字串常量:

①字元常量和字串常量是不同的。說明HELLO‘\0’H§2.3C++語言的辭彙三、字面常量即用雙引號(hào)括起來的字元序列。⑷字串常量:②不能將字串常量賦給字元常量。例如:說明charc=“abc”;//error§2.3C++語言的辭彙三、字面常量即用雙引號(hào)括起來的字元序列。⑷字串常量:說明③單個(gè)字元的字串與字元在輸出的表示上沒有差別,因?yàn)樽执敵鰰r(shí),C++並不把0結(jié)束符一同輸出。例如:cout<<“a”<<endl;cout<<‘a(chǎn)’<<endl;輸出結(jié)果為:aa§2.3C++語言的辭彙四、運(yùn)算符說明①C++語言的運(yùn)算符和運(yùn)算形式很豐富,要尤其注意一些包含混和操作的運(yùn)算符。如++、--、+=、-=等的功能和用法。②C++語言的某些運(yùn)算符有多種含義。如*的用法。(第三章詳述)§2.4C++程式的基本框架一、SP框架main用戶定義函數(shù)全局變數(shù)庫函數(shù)入口出口從結(jié)構(gòu)設(shè)計(jì)的觀點(diǎn),一個(gè)C++程式由下麵幾個(gè)部分組成:主函數(shù)、用戶定義函數(shù)、庫函數(shù)、全局說明。例外還包括預(yù)處理命令和注釋。§2.4C++程式的基本框架二、OOP框架按照面向?qū)ο蟪淌皆O(shè)計(jì)的思想,其主體是若干類定義的集合。理想的C++程式應(yīng)由以下幾部分組成:類的定義主函數(shù)注釋預(yù)處理命令包括類的說明及類成員函數(shù)的類外定義程式的入口分佈於程式各處把程式檔劃分成若干.h和.cpp檔§2.5運(yùn)行C++程式從C++根源程式到可執(zhí)行程式的步驟:

編輯、預(yù)處理、編譯、鏈接、調(diào)試C++根源程式C++預(yù)處理後的C++根源程式目標(biāo)程式可執(zhí)行程式運(yùn)行編輯器預(yù)處理器C++編譯器鏈接器程式員調(diào)試出錯(cuò)資訊§2.6C++的運(yùn)行環(huán)境Microsoft公司的VisualC++6.0Borland公司的BorlandC++5.02等等File:實(shí)現(xiàn)與檔有關(guān)的所有操作Edit:實(shí)現(xiàn)編輯操作View:修改顯示狀態(tài)Insert:用於在工程中增加檔或組件Project:用於控制整個(gè)工程Build:用於編譯、連接和調(diào)試Tools:用於定制和訪問VC的工具Window:用於改變窗口大小Help:使用MSDN及其他幫助選擇C++原始檔案輸入檔案名指定檔位置單擊OKabc輸入程式之後存盤存盤後,選擇compileabc.cpp項(xiàng),進(jìn)行編譯,給出錯(cuò)誤資訊。編譯無錯(cuò)後,自動(dòng)進(jìn)行鏈接,並生成可執(zhí)行檔,選則Executeabc.exe?!?.2C++語言的基本符號(hào)一、基本符號(hào)分類

每種語言都用一組字元來構(gòu)造有意義的語句。C++程式是用下列字元所組成的字元集寫成的:大小寫英文字母:a~z,A~Z數(shù)字字元:0~9特殊字元:空格!#%^&*_(下劃線)

-+=~<>/\|.,:;?’”()[]{}$@§2.2C++語言的基本符號(hào)二、基本符號(hào)的ASCII編碼P31例:charcl=‘a(chǎn)’;

inti=cl;

cout<<cl<<endl<<i;輸出結(jié)果:a97§2.3C++語言的辭彙一、關(guān)鍵字(保留字)關(guān)鍵字是一類有特定的專門含義的單詞。

在程式中用到的其他名字(識(shí)別字)不能與C/C++的關(guān)鍵字有相同的拼法和大小寫。關(guān)鍵字也不能重新定義。注§2.3C++語言的辭彙一、關(guān)鍵字(保留字)①C++的關(guān)鍵字一般包含了幾乎所有的C

語言的關(guān)鍵字說明②C++的關(guān)鍵字集是在不斷變化的③不同版本的C++的關(guān)鍵字集可能不同補(bǔ)充:基本關(guān)鍵字表asmautobreakcasecatchcharclassconstcontinuedefaultdeletedodoubleelseenumexternfloatforfriendgotoifinlineintlongnewoperatorprivateprotectedpublicregisterreturnshortsignedsizeofstaticstructswitchtemplatethisthrowtrytupedefunionunsignedvirtualvoidvolatilewhile§2.3C++語言的辭彙二、識(shí)別字識(shí)別字是由程式員為程式中的各種成份——

變數(shù),有名常量,用戶定義的類型,枚舉類型的值,函數(shù)及其參數(shù),類,對(duì)象等所起的名字。說明

識(shí)別字必須符合以下規(guī)則:§2.3C++語言的辭彙識(shí)別字必須符合的規(guī)則:1.不能是C++關(guān)鍵字,如for,if,case等不可作識(shí)別字;2.識(shí)別字中字母區(qū)分大小寫,如Abc與abc被認(rèn)為是兩個(gè)不同的識(shí)別字。而關(guān)鍵字不區(qū)分大小寫,如for,F(xiàn)OR,F(xiàn)or,foR都認(rèn)為是同一關(guān)鍵字;3.第一個(gè)字元必須是字母或下劃線;§2.3C++語言的辭彙識(shí)別字必須符合的規(guī)則:4.不要太長,一般不超過31個(gè)字元為宜(太長則書寫困難,反為不美);5.不能以數(shù)字開頭。如C5合法,而5C則為非法;6.中間不能有空格。如map合法,而map則為非法;§2.3C++語言的辭彙識(shí)別字必須符合的規(guī)則:7.變數(shù)名不能包含.;,”’+-之類的特殊符號(hào)。實(shí)際上,識(shí)別字中除了能使用26個(gè)英文字母的大小寫和數(shù)字之外,只能使用下劃線_。numberOfStudentnumOfStudentDx6y命名的方式?jīng)Q定了程式書寫的風(fēng)格補(bǔ)充:介紹幾種常用的命名方式1.駱駝表示法:mycarmy_carmyCar易讀,但是下劃線書寫困難識(shí)別字中不能出現(xiàn)空格補(bǔ)充:介紹幾種常用的命名方式2.匈牙利標(biāo)記法:iMycaripMycar表示整型指針變數(shù)表示整型變數(shù)在每個(gè)變數(shù)名的前面加上若干表示類型的字元§2.3C++語言的辭彙三、字面常量

常量:C++程式中的常量是指固定不變的量。字面常量有名常量例如:圓周率pai=3.1416Int型常量float型常量char型常量字串常量§2.3C++語言的辭彙三、字面常量即整型常量,可用3種形式表示:⑴Int型常量:①十進(jìn)位整數(shù)。如123,-456,0,79834等。

如果某個(gè)整數(shù)超出了一般整數(shù)的表示範(fàn)圍,系統(tǒng)可自動(dòng)按長整型(longint)來處理。如79834L表示長整型。若此字面整數(shù)超出了長整型範(fàn)圍,系統(tǒng)將發(fā)出警告。注§2.3C++語言的辭彙三、字面常量即整型常量,可用3種形式表示:⑴Int型常量:②八進(jìn)制整數(shù)

以零開頭的整數(shù)表示八進(jìn)制整數(shù)。如0123,表示(123)8?!?.3C++語言的辭彙三、字面常量即整型常量,可用3種形式表示:⑴Int型常量:③十六進(jìn)制整數(shù)

以零和字母x開頭或以零和字母X開頭的整數(shù)表示十六進(jìn)制整數(shù)。如0x123或0X123,表示(123)16。§2.3C++語言的辭彙三、字面常量即實(shí)型常量,實(shí)數(shù)在C++中就是浮點(diǎn)數(shù)。實(shí)數(shù)有2種表示:⑵float型常量:①定點(diǎn)數(shù)形式:如0.123,.456,0.0等。②指數(shù)形式:如123e5,123E5都表示123×105?!?.3C++語言的辭彙三、字面常量⑵float型常量:單精確度(float)48f或F尾碼34.5f

雙精度(double)810默認(rèn)34.5

長雙精度

(longdouble)1019l或L尾碼34.5e2L種類佔(zhàn)用記憶體有效數(shù)字表示形式舉例§2.3C++語言的辭彙三、字面常量即字元常量,是用單引號(hào)括起來的一個(gè)字元。如‘a(chǎn)’,‘?’等。⑶char型常量:C++還允許使用一種特殊形式的字元常量,即以“\”開頭的字元序列,如‘\n’。注0表示一個(gè)整數(shù)值‘0’表示一個(gè)數(shù)字字元,其ASCII碼等於48或0x30。§2.3C++語言的辭彙三、字面常量即用雙引號(hào)括起來的字元序列。⑷字串常量:①字元常量和字串常量是不同的。說明HELLO‘\0’H§2.3C++語言的辭彙三、字面常量即用雙引號(hào)括起來的字元序列。⑷字串常量:②不能將字串常量賦給字元常量。例如:說明charc=“abc”;//error§2.3C++語言的辭彙三、字面常量即用雙引號(hào)括起來的字元序列。⑷字串常量:說明③單個(gè)字元的字串與字元在輸出的表示上沒有差別,因?yàn)樽执敵鰰r(shí),

C++並不把0結(jié)束符一同輸出。例如:cout<<“a”<<endl;cout<<‘a(chǎn)’<<endl;輸出結(jié)果為:aa§2.3C++語言的辭彙四、運(yùn)算符說明①C++語言的運(yùn)算符和運(yùn)算形式很豐富,要尤其注意一些包含混和操作的運(yùn)算符。如++、--、+=、-=等的功能和用法。②C++語言的某些運(yùn)算符有多種含義。如*的用法。(第三章詳述)§2.4C++程式的基本框架一、SP框架main用戶定義函數(shù)全局變數(shù)庫函數(shù)入口出口

從結(jié)構(gòu)設(shè)計(jì)的觀點(diǎn),一個(gè)C++程式由下麵幾個(gè)部分組成:主函數(shù)、用戶定義函數(shù)、庫函數(shù)、全局說明。另外還包括預(yù)處理命令和注釋。§2.4C++程式的基本框架二、OOP框架

按照面向?qū)ο蟪淌皆O(shè)計(jì)的思想,其主體是若干類定義的集合。理想的C++程式應(yīng)由以下幾部分組成:類的定義主函數(shù)注釋預(yù)處理命令包括類的說明及類成員函數(shù)的類外定義程式的入口分佈於程式各處把程式檔劃分成若干.h和.cpp檔§2.5運(yùn)行C++程式從C++根源程式到可執(zhí)行程式的步驟:

編輯、預(yù)處理、編譯、鏈接、調(diào)試C++根源程式C++預(yù)處理後的C++根源程式目標(biāo)程式可執(zhí)行程式運(yùn)行編輯器預(yù)處理器C++編譯器鏈接器程式員調(diào)試出錯(cuò)資訊第三章基本數(shù)據(jù)類型與基本運(yùn)算包含簡單計(jì)算的C++程式基本類型及其派生類型說明語句基本運(yùn)算符§3.1包含簡單計(jì)算的C++程式一、程式實(shí)例:求和#include<iostream.h>voidmain(){inta,b,sum;//說明三個(gè)整型變數(shù)

a=43;b=37;//賦值語句

sum=a+b;//“+”、“=”是C++的算術(shù)運(yùn)算符

cout<<“Thesumis”<<sum;cout<<endl;}P55§3.1包含簡單計(jì)算的C++程式二、程式實(shí)例:計(jì)算圓面積#include<iostream.h>voidmain(){constfloatpai=3.14;//說明浮點(diǎn)型常量

floatradius;cout<<“Enterradius:”;cin<<radius;floatarea=pai*radius*radius;//說明後即被賦值

cout<<“\nTheareaofcircleis”<<area<<endl;}P56§3.2基本類型及其派生類型一、C++的數(shù)據(jù)類型C++程式中的數(shù)據(jù)類型以如下不同類型的形式出現(xiàn):1.基本類型2.用戶定義類型3.導(dǎo)出類型

由系統(tǒng)定義。C++語言在int,float,char,void四種基本類型的基礎(chǔ)上又給出了若干類型的派生類型。

是OOP區(qū)別於一般SP語言的主要特徵之一。C++既可以定義象棧、佇列、集合、布爾類型等多種數(shù)據(jù)類型,又可以結(jié)合具體問題定義象學(xué)生、汽車等類型。

由已定義類型的某種確定的方式產(chǎn)生的新類型,主要指數(shù)組、指針和引用類型?!?.2基本類型及其派生類型二、C++的基本類型2.float型3.char型4.void型float型數(shù)據(jù)占4個(gè)位元組空間,取值範(fàn)圍為-3.4E(+/-)38~3.4E(+/-)38,可應(yīng)用於部分運(yùn)算。char型數(shù)據(jù)占1個(gè)位元組空間,值集為全部基本字元,ASCII碼集或擴(kuò)充ASCII碼集對(duì)應(yīng)的全部符號(hào)。char型可看作是字元的整型,因此可參與的運(yùn)算相當(dāng)多。無值型。1.int型int型數(shù)據(jù)占2個(gè)位元組空間,取值範(fàn)圍為-32768~32767,可參與幾乎所有的運(yùn)算。§3.2基本類型及其派生類型2.float型3.char型4.void型說明1.int型①void指沒有數(shù)值的數(shù)據(jù)類型。沒有任何返回值的函數(shù)應(yīng)被說明為void類型。如:

voidfn();

在函數(shù)體內(nèi),可以使用return語句,但return

之後不能有任何運(yùn)算式

(C++對(duì)此檢查非常嚴(yán)格)②void也會(huì)出現(xiàn)在函數(shù)體說明中。如:

intg(void);

此語句說明g()是一個(gè)不需要任何入口參數(shù)的函數(shù),並且返回一個(gè)int類型的值。C++中,也可以寫成:intg();③不能把數(shù)據(jù)說明成void型,因?yàn)樽償?shù)說明成沒有任何值是沒有意義的。④void型可以說明指針,

void指針在C++中是一種普通指針類型(傳統(tǒng)的C

中被當(dāng)成字元指針),如

void*ptr;

指針ptr可以被賦給指向任何類型的指針?!?.2基本類型及其派生類型三、基本類型的派生類型

基本類型經(jīng)過簡單的字長及範(fàn)圍放大或縮小,就形成了基本類型的簡單派生類型。派生類型的說明符由int、float、char前面加上類型修飾符組成。類型修飾符包括:shortlongsignedunsingeddoubleP61§3.2基本類型及其派生類型四、enum類型enum類型又稱枚舉類型,它是一種由用戶參與定義的類型。其格式為:enum<enum類型名>{<枚舉值表>}<枚舉變數(shù)表>;enumcolor{red,blue,green,white};例§3.2基本類型及其派生類型四、enum類型⒈一個(gè)enum類型實(shí)際上是int型的一個(gè)子集,其每一個(gè)值代表一個(gè)整數(shù)。說明⒉幾個(gè)枚舉值全未賦值時(shí),它們自左至右分別與整數(shù)0、1、…n-1相對(duì)應(yīng)?!?.2基本類型及其派生類型四、enum類型⒊若第i個(gè)枚舉值賦常量值為整數(shù)m,則未賦值的後續(xù)枚舉值分別與整數(shù)m+1、

m+2對(duì)應(yīng),直到下一個(gè)賦了值的枚舉值或結(jié)束。說明enumcolor{red=100,blue=200,green,white=400};§3.2基本類型及其派生類型四、enum類型⒋枚舉類型的說明也可作為成組說明若幹整形符號(hào)常量的方法。說明⒌C++的enum類型只有一個(gè)賦值操作,不能進(jìn)行任何算術(shù)運(yùn)算,也不能通過強(qiáng)制類型轉(zhuǎn)換而直接給enum類型賦整數(shù)值?!?.2基本類型及其派生類型四、enum類型⒍定義了枚舉類型之後,枚舉變數(shù)的取值只能取枚舉類型定義時(shí)規(guī)定的值。說明colorpaint=green;colorpaint=200;//error§3.3說明語句一、語句2.運(yùn)算式語句3.控制語句4.複合語句和空語句1.說明語句§3.3說明語句一、語句2.運(yùn)算式語句3.控制語句4.複合語句和空語句1.說明語句對(duì)程式中所用到的名字識(shí)別字在使用前加以定義和說明,有的還同時(shí)給與初始化?!?.3說明語句一、語句2.運(yùn)算式語句3.控制語句4.複合語句和空語句1.說明語句程式中要求電腦對(duì)數(shù)據(jù)進(jìn)行處理和操作的語句。§3.3說明語句一、語句2.運(yùn)算式語句3.控制語句4.複合語句和空語句1.說明語句程式中用來控制語句執(zhí)行次序的語句?!?.3說明語句一、語句2.運(yùn)算式語句3.控制語句4.複合語句和空語句1.說明語句

複合語句是用“{”和“}”括起來的若干語句,又稱為“塊”或“塊語句”??照Z句是一個(gè)特殊的運(yùn)算式語句,不做任何事情。§3.3說明語句二、常量和變數(shù)常量(constant):在程式執(zhí)行過程中其值不能改變的數(shù)據(jù)稱為常量。變數(shù)(variable):在程式執(zhí)行過程中其值可以改變的數(shù)據(jù)稱為變數(shù)。§3.3說明語句三、常量說明const<類型名><常量名>=<運(yùn)算式>;例如:constintN=2000;constfloatpai=3.14159;§3.3說明語句三、常量說明例如:constfloatpai;pai=3.14159;//error說明⒈定義成const後的常量,程式中對(duì)其只能讀不能修改,由於不可修改,所以常量定義時(shí)必須初始化。§3.3說明語句三、常量說明例如:

constintnumber=max(8,3);//error

說明⒉常量名不能放在賦值語句的左邊。補(bǔ)充:關(guān)於#define

在編譯預(yù)處理命令中使用宏替換定義符號(hào)常量的方法與用const方式定義的方法有所不同:

#definepai3.14159;

宏替換是在編譯時(shí)把程式中出現(xiàn)的所有識(shí)別字pai都用3.14159來替換,僅僅是兩個(gè)字串的代換,並不是一個(gè)具有一定類型的常量名,隨後的編譯無法發(fā)現(xiàn)由它引起的數(shù)據(jù)類型誤用的錯(cuò)誤?!?.3說明語句四、變數(shù)說明[<存儲(chǔ)類>]<類型名或類型定義><變數(shù)名表>;例如:

intsize,high,temp=37;staticlongsum;autofloatt=0.5;§3.3說明語句四、變數(shù)說明說明①在同一語句裏不能混合定義不同類型的變數(shù)。②存儲(chǔ)類:自動(dòng)變數(shù)auto寄存器變數(shù)register靜態(tài)變數(shù)static外部變數(shù)extern缺省,按自動(dòng)變數(shù)處理[<存儲(chǔ)類>]<類型名或類型定義><變數(shù)名表>;§3.3說明語句四、變數(shù)說明說明③類型名和類型定義不可缺省,用以指定數(shù)據(jù)類型。④變數(shù)名表:列出該說明語句所定義的同一類型的變數(shù)及其初值。其格式為:<變數(shù)名>[=<運(yùn)算式>],<變數(shù)名表>[<存儲(chǔ)類>]<類型名或類型定義><變數(shù)名表>;§3.3說明語句四、變數(shù)說明1.全局變數(shù)和局部變數(shù)全局變數(shù):其說明語句不在任何一個(gè)類定義、函數(shù)定義和複合語句之內(nèi)的變數(shù)。即包含在某一對(duì)“{”和“}”之外的變數(shù)。佔(zhàn)用記憶體的數(shù)據(jù)區(qū),在程式運(yùn)行過程中位置不變?!?.3說明語句四、變數(shù)說明1.全局變數(shù)和局部變數(shù)局部變數(shù):其說明語句在某一類定義、函數(shù)定義和複合語句之內(nèi)的變數(shù)。即包含在某一對(duì)“{”和“}”之內(nèi),所占空間為程式運(yùn)行時(shí)設(shè)置的臨時(shí)工作區(qū),以堆疊的形式允許反復(fù)佔(zhàn)用和釋放。§3.3說明語句四、變數(shù)說明2.生存期與作用域生存期:變數(shù)a的生存期是指從a被說明且分配了記憶體開始,直到該說明語句失去效力,相應(yīng)記憶體被釋放為止,稱為該變量的生存期。全局變數(shù)的生存期局部變數(shù)的生存期§3.3說明語句四、變數(shù)說明2.生存期與作用域作用域:變數(shù)a的作用域是指a可以代表該變量的範(fàn)圍。#include<iostream.h>voidfn(inty)//y作用域開始{intx=1;//x作用域開始

if(x>y)cout<<x<<endl;elsecout<<y<<endl;}//x和y作用域結(jié)束例1描述作用域的概念#include<iostream.h>intid=3;voidmain(){id=5;{intid=7;cout<<“id=”<<id<<endl;//輸出7}cout<<“id=”<<id<<endl;//輸出5}例2不同作用域的同名變數(shù)#include<iostream.h>intn;voidfn(){cout<<“m=”<<m<<endl;//errorcout<<“n=”<<n<<endl;//ok}voidmain(){doublem=3.8;cout<<“n=”<<n<<endl;//okfn();}例3全局變數(shù)和局部變數(shù)§3.3說明語句四、變數(shù)說明3.變數(shù)的存儲(chǔ)類型⑴auto變數(shù)⑵register變數(shù)⑶static變數(shù)該變數(shù)在程式的臨時(shí)工作區(qū)中獲得存儲(chǔ)空間,為默認(rèn)值。當(dāng)寄存器夠用時(shí),可以以寄存器作為存儲(chǔ)空間。⑷extern變數(shù)§3.3說明語句四、變數(shù)說明3.變數(shù)的存儲(chǔ)類型⑴auto變數(shù)⑵register變數(shù)⑶static變數(shù)靜態(tài)變數(shù)和全局變數(shù)一樣,在內(nèi)存數(shù)據(jù)區(qū)分配空間,在整個(gè)程式運(yùn)行中不釋放。說明②靜態(tài)變數(shù)如未賦初值,系統(tǒng)將自動(dòng)為其賦默認(rèn)初值0(NULL)。③靜態(tài)變數(shù)的說明語句在程式執(zhí)行過程中多次運(yùn)行或多次被同樣說明時(shí),其第一次稱為定義性說明,進(jìn)行記憶體分配和賦初值操作,在以後的重複說明時(shí)僅維持原狀,不再做賦初值的操作。⑷extern變數(shù)//example1.cpp#include<iostream.h>intn;voidfn();voidmain(){n=20;cout<<n<<endl;fn();}//example2.cpp#include<iostream.h>staticintn;//全局靜態(tài)變數(shù)voidfn(){n++;cout<<n<<endl;}運(yùn)行結(jié)果:201§3.3說明語句全局靜態(tài)變數(shù)使該變數(shù)成為定義該變數(shù)的原始檔案所獨(dú)享。§3.3說明語句四、變數(shù)說明3.變數(shù)的存儲(chǔ)類型⑴auto變數(shù)⑵register變數(shù)⑶static變數(shù)⑷extern變數(shù)①一般用於由多個(gè)檔組成的程式中,避免重複分配記憶體。帶extern的變數(shù)是變數(shù)聲明,不是變數(shù)定義。說明②如果共同變數(shù)一次都沒有定義,或者在各個(gè)檔中分別定義,造成定義多次,或者聲明的類型不一致,都會(huì)造成直接或間接的錯(cuò)誤。例如://file1.cppinta=5;intb=6;externintc;//file2.cppinta;//error:多次定義externdoubleb;//error:類型不一致externintc;//error:無定義§3.3說明語句

兩個(gè)原始檔案都以常規(guī)方式定義變數(shù)a,沒有一個(gè)聲明extern,若在VC環(huán)境下,會(huì)在鏈接時(shí),給出一個(gè)錯(cuò)誤資訊:intaalreadydefinedinfile1.obj

兩個(gè)原始檔案的b類型不一致,VC在鏈接時(shí)報(bào)告一個(gè)錯(cuò)誤資訊:linkerror:unresolvedexternal

兩個(gè)原始檔案都聲明了變數(shù)c為extern,這時(shí)編譯不會(huì)出錯(cuò),鏈接時(shí)卻會(huì)找不到該變數(shù),產(chǎn)生一個(gè)鏈接錯(cuò)誤,因?yàn)闆]有一個(gè)檔為該變數(shù)分配空間例1//file1.cpp#include<iostream.h>voidfn1();voidfn2();intn;voidmain(){n=3;fn1();cout<<n<<endl;}voidfn1(){fn2();}//file2.cppexternintn;//n由另一個(gè)源

//檔定義voidfn2(){n=8;//使用n}運(yùn)行結(jié)果:8§3.3說明語句例2§3.3說明語句五、類型說明

作用:由用戶為一個(gè)已定義的類型賦予一個(gè)新的類型名。typedeftypedef<已定義類型名><新類型名>;typedefintid_number;typedeffloattemprature;例測試題

面向?qū)ο蟪淌皆O(shè)計(jì)將數(shù)據(jù)與___放在一起,做為一個(gè)相互依存、不可分割的整體來處理。A對(duì)數(shù)據(jù)的操作B資訊C數(shù)據(jù)隱藏D數(shù)據(jù)抽象A2面向?qū)ο蟪淌皆O(shè)計(jì)優(yōu)於傳統(tǒng)的結(jié)構(gòu)化程式設(shè)計(jì),其優(yōu)越性主要表現(xiàn)在,它有希望解決軟體工程的兩個(gè)主要問題:軟體複雜性控制和___。A精化已有的代碼B編寫可重用代碼C共用代碼D軟體生產(chǎn)率的提高D3C++對(duì)C語言作了很多改進(jìn),下列描述中___使得C語言發(fā)生了質(zhì)變,即從面向過程變成了面向?qū)ο蟆增加了一些新的運(yùn)算符B允許函數(shù)重載,並允許設(shè)置默認(rèn)參數(shù)C規(guī)定了函數(shù)說明必須用原型D引進(jìn)了類和對(duì)象的概念D4在C語言中合法的字元型常量是___。A“A”B‘t’C65DAB字元常量是用單引號(hào)括起來的一個(gè)字元。§3.4基本運(yùn)算符一、運(yùn)算符和運(yùn)算式的概念單目運(yùn)算:<單目運(yùn)算符><運(yùn)算分量>或<運(yùn)算分量><單目運(yùn)算符>例如:-24,-a,i++雙目運(yùn)算:三目運(yùn)算:多目運(yùn)算:雙目運(yùn)算:單目運(yùn)算:<左運(yùn)算分量><雙目運(yùn)算符><右運(yùn)算分量>三目運(yùn)算:雙目運(yùn)算:條件運(yùn)算符單目運(yùn)算:多目運(yùn)算:單目運(yùn)算:三目運(yùn)算:函數(shù)調(diào)用§3.4基本運(yùn)算符二、賦值運(yùn)算1.賦值運(yùn)算是一種雙目運(yùn)算,其形式為:〈變數(shù)名〉=〈運(yùn)算式〉賦值運(yùn)算的操作是:①計(jì)算運(yùn)算式的值

②把該值賦給左端的變數(shù)例如:a=b+c*a§3.4基本運(yùn)算符2.賦值縮寫,即複合賦值運(yùn)算

當(dāng)一變數(shù)既出現(xiàn)在運(yùn)算式的左邊,又出現(xiàn)在運(yùn)算式的右邊時(shí),可以縮寫。x=x*y;x*=y;x=x+y;x+=y;二、賦值運(yùn)算§3.4基本運(yùn)算符三、算術(shù)運(yùn)算1.增量和減量例如:i++;//等價(jià)於i=i+1;++i;//等價(jià)於i=i+1;a=i++;//等價(jià)於{a=i;i=i+1;}a=++i;//等價(jià)於{i=i+1;a=i;}增量首碼增量尾碼增量減量首碼減量尾碼減量++〈運(yùn)算分量〉〈運(yùn)算分量〉++--〈運(yùn)算分量〉〈運(yùn)算分量〉--§3.4基本運(yùn)算符1.增量和減量inta=3;intb=++a;//相當(dāng)於a=a+1;

b=a;

cout<<a<<“”<<b<<endl;intc=a++;//相當(dāng)於c=a;a=a+1;

cout<<a<<“”<<c<<endl;例1輸出結(jié)果:4454三、算術(shù)運(yùn)算§3.4基本運(yùn)算符1.增量和減量例2輸出結(jié)果:2212inta=3;in

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論