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

下載本文檔

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

文檔簡介

1、教師:況立群教師:況立群 電話:電話:1380343281013803432810 地點(diǎn):地點(diǎn):7 7號樓號樓802802 教材及參考書目教材及參考書目 vC+語言程序設(shè)計(jì)呂鳳翥著電子工業(yè)出版語言程序設(shè)計(jì)呂鳳翥著電子工業(yè)出版 社社2007 vC+程序設(shè)計(jì)教程錢能編著清華大學(xué)出程序設(shè)計(jì)教程錢能編著清華大學(xué)出 版社版社1999 vC+語言程序設(shè)計(jì)鄭莉等編著清華大學(xué)出語言程序設(shè)計(jì)鄭莉等編著清華大學(xué)出 版社版社1999 vC+語言及其程序設(shè)計(jì)教程(修訂版)張國語言及其程序設(shè)計(jì)教程(修訂版)張國 峰編著電子工業(yè)出版社峰編著電子工業(yè)出版社1997 面向?qū)ο蟪绦蛟O(shè)計(jì)面向?qū)ο蟪绦蛟O(shè)計(jì) 前言前言 第第1 1章面

2、向?qū)ο笈c章面向?qū)ο笈cC+C+語言概述語言概述 第第2 2章數(shù)據(jù)類型和表達(dá)式章數(shù)據(jù)類型和表達(dá)式 第第3 3章預(yù)處理和語句章預(yù)處理和語句 第第4 4章函數(shù)章函數(shù) 第第5 5章類和簡單對象章類和簡單對象 第第6 6章復(fù)雜對象章復(fù)雜對象 第第7 7章繼承性和派生類章繼承性和派生類 第第8 8章多態(tài)性和虛函數(shù)章多態(tài)性和虛函數(shù) 第第9 9章章C+C+的的I/OI/O流庫流庫 地位與作用地位與作用 v是計(jì)算機(jī)科學(xué)與技術(shù)專業(yè)本科生的一門必是計(jì)算機(jī)科學(xué)與技術(shù)專業(yè)本科生的一門必 修課程修課程 v面向?qū)ο筌浖_發(fā)集抽象性、封裝性、繼承面向?qū)ο筌浖_發(fā)集抽象性、封裝性、繼承 性和多態(tài)性于一體,可以幫助人們開發(fā)出模性和

3、多態(tài)性于一體,可以幫助人們開發(fā)出模 塊化、數(shù)據(jù)抽象程度高的,體現(xiàn)信息隱蔽、塊化、數(shù)據(jù)抽象程度高的,體現(xiàn)信息隱蔽、 可復(fù)用、易修改、易擴(kuò)充等特性的程序可復(fù)用、易修改、易擴(kuò)充等特性的程序 內(nèi)容簡介內(nèi)容簡介 v面向?qū)ο蟮幕舅枷朊嫦驅(qū)ο蟮幕舅枷?vC+語言的基本概念、基本語法和編程方法語言的基本概念、基本語法和編程方法 vC+語言的語言的面向?qū)ο筇卣髅嫦驅(qū)ο筇卣?類與對象類與對象 繼承與派生繼承與派生 多態(tài)性與虛函數(shù)多態(tài)性與虛函數(shù) 學(xué)習(xí)方法學(xué)習(xí)方法 v多練習(xí),掌握基本概念多練習(xí),掌握基本概念 v多讀程序,學(xué)習(xí)編程方法與技巧多讀程序,學(xué)習(xí)編程方法與技巧 v多上機(jī)實(shí)踐,加強(qiáng)動手能力多上機(jī)實(shí)踐,加強(qiáng)動手

4、能力 v多剖析范例,積累編程經(jīng)驗(yàn)多剖析范例,積累編程經(jīng)驗(yàn) 第第1章面向?qū)ο笈c章面向?qū)ο笈cC+語言概述語言概述 v基本要求基本要求 掌握:面向?qū)ο蟪绦蛟O(shè)計(jì)的基本思想及掌握:面向?qū)ο蟪绦蛟O(shè)計(jì)的基本思想及 基本概念;基本概念;c+中支持面向?qū)ο蟮奶攸c(diǎn);中支持面向?qū)ο蟮奶攸c(diǎn); 面向?qū)ο蟮能浖_發(fā)環(huán)境;面向?qū)ο蟮能浖_發(fā)環(huán)境;visual c+ 開發(fā)工作臺的主要功能。開發(fā)工作臺的主要功能。 第第1章章C+語言概述語言概述 v1.1C+語言語言及特點(diǎn)及特點(diǎn) v1.2面向?qū)ο蟮姆椒嫦驅(qū)ο蟮姆椒?v1.3C語言與語言與C+語言的關(guān)系語言的關(guān)系 v1.4C+的詞法和詞法規(guī)則的詞法和詞法規(guī)則 v1.5C+程序的

5、結(jié)構(gòu)程序的結(jié)構(gòu) v1.6C+程序的編輯、編譯和運(yùn)行程序的編輯、編譯和運(yùn)行 v編程語言的發(fā)展編程語言的發(fā)展 vC+的起源和特點(diǎn)的起源和特點(diǎn) 1.1C+語言及特點(diǎn)語言及特點(diǎn) 1.1.1編程語言的發(fā)展編程語言的發(fā)展 v機(jī)器語言(二進(jìn)制碼)機(jī)器語言(二進(jìn)制碼) v匯編語言匯編語言 v20世紀(jì)世紀(jì)50年代中期,年代中期,F(xiàn)ORTRAN語言語言 v20世紀(jì)世紀(jì)50年代中期,年代中期,Algol語言語言 在計(jì)算機(jī)語言發(fā)展史上具有在計(jì)算機(jī)語言發(fā)展史上具有劃時代劃時代的意義,的意義, 引入了許多程序設(shè)計(jì)概念。如引入了許多程序設(shè)計(jì)概念。如變量變量、數(shù)組數(shù)組、循環(huán)循環(huán)、 分支分支等。等。 提出提出塊塊(BeginE

6、nd)思想思想,對數(shù)據(jù)進(jìn)行保護(hù),對數(shù)據(jù)進(jìn)行保護(hù), 是一種是一種初級封裝初級封裝。 1.1.1編程語言的發(fā)展編程語言的發(fā)展(續(xù))(續(xù)) v20世紀(jì)世紀(jì)60年代中期,年代中期,Simula 67語言語言 面向?qū)ο笳Z言的鼻祖面向?qū)ο笳Z言的鼻祖,提出了提出了對象對象、類類的概的概 念,并支持類的念,并支持類的繼承繼承。 v20世紀(jì)世紀(jì)70年代中期,年代中期,Ada語言語言 支持?jǐn)?shù)據(jù)抽象類型支持?jǐn)?shù)據(jù)抽象類型的最重要的語言之一,但的最重要的語言之一,但 不完全支持繼承不完全支持繼承。 v20世紀(jì)世紀(jì)70年代中期,年代中期,Smalltalk語言語言 最有影響最有影響的面向?qū)ο笳Z言之一,豐富了面向的面向?qū)ο?/p>

7、語言之一,豐富了面向 對象的概念。對象的概念。 v20世紀(jì)世紀(jì)80年代中期后出現(xiàn)年代中期后出現(xiàn)C+等多種面向?qū)ο笳Z言等多種面向?qū)ο笳Z言 1.1.2C+的起源和特點(diǎn)的起源和特點(diǎn) 一、一、C+的起源的起源 v在在C語言基礎(chǔ)語言基礎(chǔ)上為上為支持面向?qū)ο笾С置嫦驅(qū)ο蟮某绦蛟O(shè)計(jì)研的程序設(shè)計(jì)研 制的一個制的一個通用目的通用目的的程序設(shè)計(jì)語言;的程序設(shè)計(jì)語言; v由由AT int wdcount,chcount; wdcount=1; chcount=0; printf(*:Please input any phrasen); 1.2.1面向過程與面向?qū)ο蟪绦蛟O(shè)計(jì)面向過程與面向?qū)ο蟪绦蛟O(shè)計(jì)(續(xù)續(xù)) 面向過程

8、的方法面向過程的方法 1.2.1面向過程與面向?qū)ο蟪绦蛟O(shè)計(jì)面向過程與面向?qū)ο蟪绦蛟O(shè)計(jì)(續(xù)續(xù)) while(ch=getche()!=r) chcount+; if(ch= ) wdcount+; printf(n*:The number of word is %dn, wdcount); printf(n*:The number of char is %dn, chcount); 1.2.1面向過程與面向?qū)ο蟪绦蛟O(shè)計(jì)面向過程與面向?qū)ο蟪绦蛟O(shè)計(jì)(續(xù)續(xù)) #include #include class count public: count(); void process(); void disp

9、lay(); private: int wdcount,chcount; ; 私有成員私有成員 構(gòu)造函數(shù)構(gòu)造函數(shù) 成員函數(shù)成員函數(shù) 數(shù)據(jù)成員數(shù)據(jù)成員 成員函數(shù)成員函數(shù) 定義類定義類 公有成員公有成員 面向?qū)ο蟮姆椒嫦驅(qū)ο蟮姆椒?1.2.1面向過程與面向?qū)ο蟪绦蛟O(shè)計(jì)面向過程與面向?qū)ο蟪绦蛟O(shè)計(jì)(續(xù)續(xù)) count:count() wdcount=1; chcount=0; void count:display() printf(n*:The number of word is %dn, wdcount); printf(n*:The number of char is %dn, chcount)

10、; 1.2.1面向過程與面向?qū)ο蟪绦蛟O(shè)計(jì)面向過程與面向?qū)ο蟪绦蛟O(shè)計(jì)(續(xù)續(xù)) void count:process() char ch; cout*:Please input any phraseendl; while(ch=getche()!=r) chcount+; if(ch= ) wdcount+; coutendl; 1.2.1面向過程與面向?qū)ο蟪绦蛟O(shè)計(jì)面向過程與面向?qū)ο蟪绦蛟O(shè)計(jì)(續(xù)續(xù)) void main() count A; A.process(); A.display(); 運(yùn)運(yùn) 行行 結(jié)結(jié) 果果 *Please input any phrase. I am a teacher

11、*:The number of word is 4 *:The number of char is 15 定義對象定義對象 調(diào)用公有成員函數(shù)調(diào)用公有成員函數(shù) 調(diào)用公有成員函數(shù)調(diào)用公有成員函數(shù) 1.2.1面向過程與面向?qū)ο蟪绦蛟O(shè)計(jì)面向過程與面向?qū)ο蟪绦蛟O(shè)計(jì)(續(xù)續(xù)) v是一種數(shù)學(xué)思維或計(jì)是一種數(shù)學(xué)思維或計(jì) 算機(jī)思維方法,與人算機(jī)思維方法,與人 們認(rèn)識世界的方法不們認(rèn)識世界的方法不 同同 v以不穩(wěn)定的、多變的以不穩(wěn)定的、多變的 “過程過程”和和“操作操作” ” 為中心來構(gòu)造系統(tǒng)為中心來構(gòu)造系統(tǒng) v可重用性較差可重用性較差 v是建立在認(rèn)識方法學(xué)是建立在認(rèn)識方法學(xué) 基礎(chǔ)上的一項(xiàng)技術(shù)科基礎(chǔ)上的一項(xiàng)技術(shù)科

12、學(xué),比較自然地模擬學(xué),比較自然地模擬 了人類認(rèn)識客觀世界了人類認(rèn)識客觀世界 的方式;的方式; v以相對穩(wěn)定的以相對穩(wěn)定的“對象對象” 和和“數(shù)據(jù)結(jié)構(gòu)數(shù)據(jù)結(jié)構(gòu)”為中為中 心來構(gòu)造系統(tǒng)心來構(gòu)造系統(tǒng) v可重用性較好可重用性較好 面向過程程序設(shè)計(jì)面向?qū)ο蟪绦蛟O(shè)計(jì) 1.2.1面向過程與面向?qū)ο蟪绦蛟O(shè)計(jì)面向過程與面向?qū)ο蟪绦蛟O(shè)計(jì)(續(xù)續(xù)) 面向過程程序設(shè)計(jì)面向過程程序設(shè)計(jì)面向?qū)ο蟪绦蛟O(shè)計(jì)面向?qū)ο蟪绦蛟O(shè)計(jì) P1 P2 P3 P4 P5 O1 O2 O3 O4 O5 P6 1.2.1面向過程與面向?qū)ο蟪绦蛟O(shè)計(jì)面向過程與面向?qū)ο蟪绦蛟O(shè)計(jì)(續(xù)續(xù)) 面向過程程序設(shè)計(jì)面向過程程序設(shè)計(jì)面向?qū)ο蟪绦蛟O(shè)計(jì)面向?qū)ο蟪绦蛟O(shè)計(jì) P

13、1 P2 P3 P5 O1 O2 O3 O4 O5 P6 O4 1.2.2抽象在面向?qū)ο笾械淖饔贸橄笤诿嫦驅(qū)ο笾械淖饔?一、抽象的概念一、抽象的概念 v抽象代表著一個對象的抽象代表著一個對象的本質(zhì)特征本質(zhì)特征,這個特征將,這個特征將 這個對象與所有其他種類的對象區(qū)別開來;這個對象與所有其他種類的對象區(qū)別開來; v抽象是通過從抽象是通過從特定特定的實(shí)例中抽取的實(shí)例中抽取共同共同的性質(zhì)以的性質(zhì)以 形成形成一般化一般化的概念的過程;的概念的過程; v抽象具有抽象具有層次層次; 汽車汽車輪船輪船飛機(jī)飛機(jī) 交通工具交通工具 1.2.2抽象在面向?qū)ο笾械淖饔贸橄笤诿嫦驅(qū)ο笾械淖饔?續(xù)續(xù)) 二、面向?qū)ο蟪橄?/p>

14、的原理二、面向?qū)ο蟪橄蟮脑?數(shù)據(jù)抽象、行為共享、進(jìn)化、確定性數(shù)據(jù)抽象、行為共享、進(jìn)化、確定性 1、數(shù)據(jù)抽象、數(shù)據(jù)抽象 為程序員提供了一種對數(shù)據(jù)和為操作這些數(shù)據(jù)為程序員提供了一種對數(shù)據(jù)和為操作這些數(shù)據(jù) 所需要的算法的抽象;所需要的算法的抽象;是面向?qū)ο蠓椒ǖ暮诵氖敲嫦驅(qū)ο蠓椒ǖ暮诵?,包,?括:括: 模塊化:模塊化:構(gòu)成了面向?qū)ο笥?jì)算的本質(zhì);構(gòu)成了面向?qū)ο笥?jì)算的本質(zhì); 封裝封裝(信息隱藏):(信息隱藏):將一個模塊的細(xì)節(jié)部分對用將一個模塊的細(xì)節(jié)部分對用 戶隱藏起來,用戶只能通過戶隱藏起來,用戶只能通過受保護(hù)的接口受保護(hù)的接口來訪問來訪問 某個模塊,而不能直接訪問一個模塊內(nèi)部的細(xì)節(jié);某個模塊,而

15、不能直接訪問一個模塊內(nèi)部的細(xì)節(jié); 類類 公有成員公有成員 1.2.2抽象在面向?qū)ο笾械淖饔贸橄笤诿嫦驅(qū)ο笾械淖饔?續(xù)續(xù)) 2、行為共享、行為共享 v行為行為是由是由實(shí)體實(shí)體的的外部接口外部接口定義的定義的 v行為共享行為共享指指許多實(shí)體許多實(shí)體具有具有相同相同的的接口接口,可增加,可增加 系統(tǒng)的靈活性;系統(tǒng)的靈活性; v支持行為共享的方式支持行為共享的方式 分類與層次分類分類與層次分類 多態(tài)與繼承多態(tài)與繼承 對象對象公有成員公有成員函數(shù)名函數(shù)名 1.2.2抽象在面向?qū)ο笾械淖饔贸橄笤诿嫦驅(qū)ο笾械淖饔?續(xù)續(xù)) 3、進(jìn)化、進(jìn)化 v需求進(jìn)化需求進(jìn)化(虛函數(shù))(虛函數(shù)) v進(jìn)化式的問題求解進(jìn)化式的問題

16、求解(繼承的構(gòu)造函數(shù))(繼承的構(gòu)造函數(shù)) 4、確定性、確定性 v確保每個行為項(xiàng)都有一個正確的解釋,系統(tǒng)不確保每個行為項(xiàng)都有一個正確的解釋,系統(tǒng)不 會因不能響應(yīng)某一行為而失敗;會因不能響應(yīng)某一行為而失?。?v確定性與類型的正確性有關(guān);確定性與類型的正確性有關(guān); 1.2.3面向?qū)ο竺嫦驅(qū)ο蟮母拍畹母拍?面向?qū)ο笫沁\(yùn)用面向?qū)ο笫沁\(yùn)用對象對象、類類、繼承繼承、封裝封裝、包含包含、消息消息 傳遞傳遞、多態(tài)性多態(tài)性等概念來構(gòu)造系統(tǒng)的軟件開發(fā)方法;等概念來構(gòu)造系統(tǒng)的軟件開發(fā)方法; 一、對象一、對象 1、概念上、概念上 對象是代表著正在創(chuàng)建的系統(tǒng)中的一個對象是代表著正在創(chuàng)建的系統(tǒng)中的一個實(shí)體實(shí)體; 2、實(shí)現(xiàn)形

17、式上、實(shí)現(xiàn)形式上 對象是一個對象是一個狀態(tài)狀態(tài)和和操作(或行為)操作(或行為)的的封裝體封裝體; 3、對象的定義、對象的定義 狀態(tài)狀態(tài):對象的狀態(tài)由這個對象的:對象的狀態(tài)由這個對象的屬性屬性和這些和這些屬性屬性 的當(dāng)前值的當(dāng)前值決定。屬性是靜態(tài)的,當(dāng)前值是動態(tài)的決定。屬性是靜態(tài)的,當(dāng)前值是動態(tài)的 一個對象具有一個對象具有狀態(tài)狀態(tài)、行為行為和和標(biāo)識標(biāo)識。 1.2.3面向?qū)ο蟮母拍蠲嫦驅(qū)ο蟮母拍?續(xù)續(xù)) 行為行為:一個對象如何以:一個對象如何以狀態(tài)變化狀態(tài)變化和和消息傳遞消息傳遞的形的形 式進(jìn)行作用和對外界進(jìn)行反應(yīng)。式進(jìn)行作用和對外界進(jìn)行反應(yīng)。 一個對象的行為代表了這個對象的外部可見的一個對象的行

18、為代表了這個對象的外部可見的 和可測試的活動;和可測試的活動; 一個對象的狀態(tài)代表著它的一個對象的狀態(tài)代表著它的行為行為的的累積累積結(jié)果;結(jié)果; 標(biāo)識標(biāo)識:標(biāo)識是一個對象標(biāo)識是一個對象固有固有的一種的一種特性特性,該特性,該特性 將這個對象與其他對象區(qū)別開來;將這個對象與其他對象區(qū)別開來; 屬性屬性1 屬性屬性2 . 屬性屬性n 值值1111 值值2121 . 值值n1n1 值值1212 值值2222 . 值值n2n2 對象對象1 1 行為行為 值值1111 值值2121 . 值值n1n1 值值1212 值值2222 . 值值n2n2 對象對象2 2 行為行為 1.2.3面向?qū)ο蟮母拍蠲嫦驅(qū)ο?/p>

19、的概念(續(xù)續(xù)) 4、對象的分類、對象的分類 實(shí)體對象實(shí)體對象 界面對象界面對象 控制對象控制對象 按作用分類按作用分類 存儲信息的對象存儲信息的對象 支持系統(tǒng)的主要功能支持系統(tǒng)的主要功能 二、類二、類 1、什么是類、什么是類 類是具有相同屬性和行為特征的若干對象的類是具有相同屬性和行為特征的若干對象的 集合;集合; 1.2.3面向?qū)ο蟮母拍蠲嫦驅(qū)ο蟮母拍?續(xù)續(xù)) 類是創(chuàng)建對象的樣板類是創(chuàng)建對象的樣板,它包含著所創(chuàng)建對象,它包含著所創(chuàng)建對象 的狀態(tài)描述和方法的定義。類的完整描述包含了的狀態(tài)描述和方法的定義。類的完整描述包含了 外部接口和內(nèi)部算法以及數(shù)據(jù)結(jié)構(gòu)的形式;外部接口和內(nèi)部算法以及數(shù)據(jù)結(jié)構(gòu)的

20、形式; 2、類是對象的抽象描述、類是對象的抽象描述 類中包含生成對象的具體方法類中包含生成對象的具體方法,由一個類所,由一個類所 創(chuàng)建的對象稱為該類的實(shí)例;創(chuàng)建的對象稱為該類的實(shí)例; 3、類是抽象數(shù)據(jù)類型的實(shí)現(xiàn)、類是抽象數(shù)據(jù)類型的實(shí)現(xiàn) 類是所有對象的類是所有對象的共同的行為共同的行為和和不同的狀態(tài)不同的狀態(tài)的的 集合體;集合體; 屬性屬性1 1 屬性屬性2 2 屬性屬性n n 行為行為1 1 行為行為2 2 行為行為m m 值值1111 值值2121 值值n1n1 值值1212 值值2222 值值n2n2 行為行為1 1 值值1111 值值2121 值值n1n1 行為行為m m 值值1212

21、值值2222 值值n2n2 對象對象1 1對象對象2 2 對象對象k k 對象對象p p 類類 類與對象的關(guān)系類與對象的關(guān)系 .3面向?qū)ο蟮拿嫦驅(qū)ο蟮母拍罡拍? (續(xù)續(xù)) ) 1.2.3面向?qū)ο蟮母拍蠲嫦驅(qū)ο蟮母拍?續(xù)續(xù)) 四、多態(tài)性四、多態(tài)性 多態(tài)性指向不同對象發(fā)送同一條消息,根據(jù)對多態(tài)性指向不同對象發(fā)送同一條消息,根據(jù)對 象的類的不同完成不同的行為。象的類的不同完成不同的行為。 由函數(shù)和運(yùn)算符的重載及虛函數(shù)實(shí)現(xiàn)類的多態(tài)由函數(shù)和運(yùn)算符的重載及虛函數(shù)實(shí)現(xiàn)類的多態(tài) 性。性。 綜上,面向?qū)ο缶哂腥筇匦裕悍庋b性、繼承綜上,面向?qū)ο缶哂腥筇匦裕悍庋b性、繼承 性、多態(tài)性。性、多態(tài)性。

22、 三、繼承三、繼承 繼承提供了創(chuàng)建新類的一種方法,它的本質(zhì)繼承提供了創(chuàng)建新類的一種方法,它的本質(zhì) 特征是行為共享;特征是行為共享; vC+對對C語言的改進(jìn)語言的改進(jìn) vC+對面向?qū)ο蠓椒ǖ闹С謱γ嫦驅(qū)ο蠓椒ǖ闹С?1.3C語言與語言與C+語言語言的關(guān)系的關(guān)系 1.3.1C+對對C語言的改進(jìn)語言的改進(jìn) v增加了新的運(yùn)算符:增加了新的運(yùn)算符::,new,delete等;等; v改進(jìn)了類型系統(tǒng),增加了安全性;改進(jìn)了類型系統(tǒng),增加了安全性; v引進(jìn)了引用概念;引進(jìn)了引用概念; v允許函數(shù)重載,允許設(shè)置缺省參數(shù),提高了編允許函數(shù)重載,允許設(shè)置缺省參數(shù),提高了編 程的靈活性;程的靈活性; v引進(jìn)了內(nèi)聯(lián)函數(shù)

23、,提高了程序的效率;引進(jìn)了內(nèi)聯(lián)函數(shù),提高了程序的效率; v可以根據(jù)需要隨時對變量進(jìn)行說明;可以根據(jù)需要隨時對變量進(jìn)行說明; 1.3.2C+對面向?qū)ο蠓椒ǖ闹С謱γ嫦驅(qū)ο蠓椒ǖ闹С?vC+支持?jǐn)?shù)據(jù)封裝(數(shù)據(jù)抽象)支持?jǐn)?shù)據(jù)封裝(數(shù)據(jù)抽象) C+中,中,類是支持?jǐn)?shù)據(jù)封裝的工具,對象則類是支持?jǐn)?shù)據(jù)封裝的工具,對象則 是數(shù)據(jù)封裝的實(shí)現(xiàn);是數(shù)據(jù)封裝的實(shí)現(xiàn); vC+中包含有私有、公有和保護(hù)成員中包含有私有、公有和保護(hù)成員 每個可能的消息對應(yīng)一個相應(yīng)的方法,方法每個可能的消息對應(yīng)一個相應(yīng)的方法,方法 通過函數(shù)來定義通過函數(shù)來定義; vC+中通過發(fā)送消息來處理對象中通過發(fā)送消息來處理對象 vC+中中允許友元破壞

24、封裝性允許友元破壞封裝性 vC+中允許函數(shù)名和運(yùn)算符重載中允許函數(shù)名和運(yùn)算符重載 vC+支持繼承性支持繼承性 vC+支持動態(tài)聯(lián)編支持動態(tài)聯(lián)編 vC+語言的字符集語言的字符集 v單詞及詞法規(guī)則單詞及詞法規(guī)則 v空白空白 1.4C+語言語言的詞法和詞法規(guī)則的詞法和詞法規(guī)則 1.4.1C+的字符集的字符集 v大小寫的英文字母:大小寫的英文字母:az,AZ v數(shù)字字符:數(shù)字字符:09 v特殊字符特殊字符 1.4.2單詞及詞法規(guī)則單詞及詞法規(guī)則 1、標(biāo)識符、標(biāo)識符 v組成規(guī)則:以字母或下劃線開始,其后跟零個或組成規(guī)則:以字母或下劃線開始,其后跟零個或 多個字母、數(shù)字或下劃線;多個字母、數(shù)字或下劃線; 不

25、能以數(shù)字開始不能以數(shù)字開始 正確標(biāo)識符:正確標(biāo)識符:Result, DoubleList, _first, first_ 錯誤標(biāo)識符:錯誤標(biāo)識符:1first v標(biāo)識符的長度任意(受編譯器限制);標(biāo)識符的長度任意(受編譯器限制); v區(qū)分字母的大小寫;區(qū)分字母的大小寫; v不能使用系統(tǒng)的保留字;不能使用系統(tǒng)的保留字; 例如:例如:ADD, Add, add 1.4.2單詞及詞法規(guī)則(續(xù))單詞及詞法規(guī)則(續(xù)) 2、關(guān)鍵字(保留字)、關(guān)鍵字(保留字) 表表1-1C+的關(guān)鍵字的關(guān)鍵字 1.4.2單詞及詞法規(guī)則(續(xù))單詞及詞法規(guī)則(續(xù)) 3、運(yùn)算符、運(yùn)算符 單目單目 雙目雙目 三目三目 運(yùn)算符運(yùn)算符

26、5、分隔符、分隔符 () , 分隔符分隔符 : 4、各種文字、各種文字 數(shù)字?jǐn)?shù)字 字符文字字符文字 串文字串文字 文字文字 布爾文字布爾文字 ; 1.4.3空白空白 一、空白一、空白 v包括:包括:空格、制表符、換行符空格、制表符、換行符 v功能:指示詞法記號的開始和結(jié)束位置;功能:指示詞法記號的開始和結(jié)束位置; 二、注釋二、注釋 v/*/ v/ 1.5C+程序的結(jié)構(gòu)程序的結(jié)構(gòu) 一、一、C+示范程序示范程序 #include void main() coutHello world! endl; 二、二、C+程序的組成程序的組成 由若干文件組成,每個文件有:由若干文件組成,每個文件有: 類類 函

27、數(shù)(其中函數(shù)(其中main為主函數(shù))為主函數(shù)) I/O流庫,提供所流庫,提供所 有的輸入輸出操作有的輸入輸出操作 cout:流類對象流類對象 :提取符提取符 提供鍵盤輸入;提供鍵盤輸入; 例如:例如: cinPlease input two integers:; cinab; endl:換行;換行; 1.6C+程序的編輯、編譯和運(yùn)行程序的編輯、編譯和運(yùn)行 一、編輯:源文件的擴(kuò)展名為一、編輯:源文件的擴(kuò)展名為.cpp 二、編譯二、編譯 1、預(yù)處理過程、預(yù)處理過程 詞法分析:單詞詞法分析:單詞 語法分析:構(gòu)造程序的格式語法分析:構(gòu)造程序的格式 符號表:程序中的各種符號及其屬性符號表:程序中的各種符

28、號及其屬性 錯誤處理程序:錯誤處理程序: 生成目標(biāo)代碼:目標(biāo)文件擴(kuò)展名生成目標(biāo)代碼:目標(biāo)文件擴(kuò)展名.obj 2、編譯、編譯 過程過程 3、連接過程:可執(zhí)行文件擴(kuò)展名、連接過程:可執(zhí)行文件擴(kuò)展名.exe 三、運(yùn)行三、運(yùn)行 1.6C+程序的編輯、編譯和運(yùn)行程序的編輯、編譯和運(yùn)行(續(xù)續(xù)) 源程序源程序.cpp.cpp 目標(biāo)文件目標(biāo)文件.obj.obj 可執(zhí)行文可執(zhí)行文 件件.exe.exe 編譯器編譯器 連接器連接器 磁盤中的磁盤中的 #include#include文件文件 C+C+庫文件庫文件.LIB.LIB 第第2章數(shù)據(jù)類型和表達(dá)式章數(shù)據(jù)類型和表達(dá)式 v2.1基本數(shù)據(jù)類型基本數(shù)據(jù)類型 v2.2

29、常量和變量常量和變量 v2.3枚舉類型枚舉類型 v2.4數(shù)組類型數(shù)組類型 v2.5鍵盤輸入和屏幕輸出鍵盤輸入和屏幕輸出 v2.6指針和引用指針和引用 v2.7運(yùn)算符運(yùn)算符 v2.8表達(dá)式表達(dá)式 v2.9類型定義類型定義 2.1基本數(shù)據(jù)類型基本數(shù)據(jù)類型 一、基本數(shù)據(jù)類型一、基本數(shù)據(jù)類型 整型整型int 浮點(diǎn)型浮點(diǎn)型(實(shí)型實(shí)型) 字符型字符型char 基本數(shù)基本數(shù) 據(jù)類型據(jù)類型 邏輯型邏輯型bool 空值型空值型void 單精度浮點(diǎn)數(shù)單精度浮點(diǎn)數(shù)float 雙精度浮點(diǎn)數(shù)雙精度浮點(diǎn)數(shù) double 用于函數(shù)和指針用于函數(shù)和指針 2.1基本數(shù)據(jù)類型(續(xù))基本數(shù)據(jù)類型(續(xù)) 二、數(shù)據(jù)類型修飾符二、數(shù)據(jù)類

30、型修飾符 signed:有符號有符號 unsigned:無符號無符號 short:短型短型 long:長型長型 說明:說明: 3) longlong修飾符還適用于修飾符還適用于雙精度浮點(diǎn)數(shù)雙精度浮點(diǎn)數(shù); 2) 上述修飾符上述修飾符均均可用于可用于整型整型和和字符型字符型; 1) 類型修飾符可以修飾類型修飾符可以修飾除除voidvoid、boolbool類型以外類型以外 的其他類型;的其他類型; 2.1基本數(shù)據(jù)類型(續(xù))基本數(shù)據(jù)類型(續(xù)) 三、基本數(shù)據(jù)類型列表三、基本數(shù)據(jù)類型列表(P21) 表表2-1C+的基本數(shù)據(jù)類型的基本數(shù)據(jù)類型 2.1基本數(shù)據(jù)類型(續(xù))基本數(shù)據(jù)類型(續(xù)) 說明:說明: 1)

31、 表中的表中的int可以省略可以省略,即在,即在int之前有修飾符出之前有修飾符出 現(xiàn)時,可以省略關(guān)鍵字現(xiàn)時,可以省略關(guān)鍵字int; 2) 單精度類型單精度類型float、雙精度類型、雙精度類型double、長精、長精 度類型度類型long double統(tǒng)稱浮點(diǎn)類型;統(tǒng)稱浮點(diǎn)類型; 3) char類型類型和各種和各種int類型統(tǒng)稱整型類型;類型統(tǒng)稱整型類型;char 類型類型變量在內(nèi)存中以變量在內(nèi)存中以其其ASCII碼值碼值的形式的形式存儲存儲; 4) 字寬(字節(jié))取決于操作系統(tǒng)和編譯器的實(shí)現(xiàn),字寬(字節(jié))取決于操作系統(tǒng)和編譯器的實(shí)現(xiàn), 可用可用sizeof驗(yàn)證;驗(yàn)證; v變量變量 v常量常量

32、 2.2常量和變量常量和變量 2.2.1變量變量 一、變量的三個基本要素一、變量的三個基本要素 名字名字 類型類型 值值 三要素三要素 數(shù)據(jù)值數(shù)據(jù)值 地址值地址值 int c; c=5; 內(nèi)存內(nèi)存 5 . c 地址地址 值值 1000H 二、變量的定義二、變量的定義 v可以在程序中可以在程序中隨時定義隨時定義變量,只要在該變量被變量,只要在該變量被 使用前使用前定義即可;定義即可; v定義格式:定義格式:; 例如:例如:int a,b,c;double x,y,z; 變量類型變量類型 變量名變量名 數(shù)據(jù)值數(shù)據(jù)值 地址值地址值 2.2.1變量(續(xù))變量(續(xù)) v同一程序塊內(nèi)同一程序塊內(nèi)不可以不可

33、以定義定義同名變量同名變量; v初始值初始值 變量定義變量定義時可賦時可賦初始值初始值; 聲明格式:聲明格式: 數(shù)據(jù)類型數(shù)據(jù)類型 標(biāo)識符標(biāo)識符1=初始值初始值1, ,標(biāo)識符標(biāo)識符n=初始值初始值n; 數(shù)據(jù)類型數(shù)據(jù)類型 標(biāo)識符標(biāo)識符1(初始值初始值1), ,標(biāo)識符標(biāo)識符n(初始值初始值n); 例如:例如:double price=15.5;int size(100); 未被初始化未被初始化的變量的值或者是默認(rèn)值,或者是的變量的值或者是默認(rèn)值,或者是 無效值,無效值,由變量類型決定由變量類型決定; v變量可被賦值,由變量名標(biāo)識;變量可被賦值,由變量名標(biāo)識; 2.2.2常量常量 一、整型常量(無小數(shù)

34、部分)一、整型常量(無小數(shù)部分) 1、表示方法、表示方法 v十進(jìn)制十進(jìn)制 v八進(jìn)制八進(jìn)制 v十六進(jìn)制十六進(jìn)制 2、十進(jìn)制表示、十進(jìn)制表示 v由由09的數(shù)字組成的數(shù)字組成 v不不能以能以0開始開始 v無前綴無前綴 v例:例:132, -345 3、八進(jìn)制表示、八進(jìn)制表示 v由由0 7的數(shù)字組成的數(shù)字組成 v以以0為前綴為前綴 v例:例:010, -0536 4、十六進(jìn)制表示、十六進(jìn)制表示 v由由09的數(shù)字及的數(shù)字及A F的字母的字母(大小寫均可大小寫均可) 組成組成 v以以0 x或或0X為前綴為前綴 v例:例:0 x7A, -0X3de 2.2.2常量(續(xù))常量(續(xù)) 5、說明:、說明: 1)

35、長整型長整型用用L(或(或l)做)做后綴后綴表示。例如:表示。例如: 32765L,793l; 2) 無符號型無符號型用用U(或(或u)做)做后綴后綴表示。例如:表示。例如: 4352U,3100u; 3) unsigned long型型用后綴用后綴U(或(或u)和)和L(或(或l) 一起表示,一起表示,L與與U的先后順序無關(guān)。例如:的先后順序無關(guān)。例如: 49321ul,37825LU,41152Lu; 2.2.2常量(續(xù))常量(續(xù)) 二、浮點(diǎn)型常量二、浮點(diǎn)型常量 v由整數(shù)部分和小數(shù)部分構(gòu)成;由整數(shù)部分和小數(shù)部分構(gòu)成; v只有十進(jìn)制表示只有十進(jìn)制表示; v一般表示形式(小數(shù)表示形式):一般表

36、示形式(小數(shù)表示形式): 整數(shù)部分與小數(shù)部分可以省去一部分,但整數(shù)部分與小數(shù)部分可以省去一部分,但 不能全部省去;不能全部省去; 例如:例如:5.,.25,4.07 2.2.2常量(續(xù))常量(續(xù)) v科學(xué)表示形式:科學(xué)表示形式: 在小數(shù)表示法后面加在小數(shù)表示法后面加E(或(或e)表示指數(shù))表示指數(shù); 例如:例如:23.5E6,.032E-5,.3e10 指數(shù)部分指數(shù)部分可正可負(fù),但可正可負(fù),但必須為整數(shù)必須為整數(shù); v浮點(diǎn)常量的浮點(diǎn)常量的缺省數(shù)據(jù)類型缺省數(shù)據(jù)類型為為double型;型; v后綴后綴F(或(或f)表示)表示float類型;類型; v后綴后綴l(或(或l)表示)表示long dou

37、ble類型;類型; 2.2.2常量(續(xù))常量(續(xù)) 三、字符常量三、字符常量 v由一對由一對單引號單引號括起的括起的一個字符一個字符表示;表示; v其其值值為所括起字符在為所括起字符在ASCII表中的表中的編碼編碼; v所括起字符的表示方法:所括起字符的表示方法: 1、圖形表示法、圖形表示法 該方法適用于該方法適用于有圖形符號有圖形符號的的可打印字符可打印字符; 例如例如:A,a,* 2、轉(zhuǎn)義序列表示法、轉(zhuǎn)義序列表示法 該方法適用于該方法適用于所有字符所有字符,尤其是,尤其是無圖形符號無圖形符號 的的不可打印字符不可打印字符; 2.2.2常量(續(xù))常量(續(xù)) (1)轉(zhuǎn)義序列表示方法:)轉(zhuǎn)義序列

38、表示方法:以反斜線以反斜線()開頭開頭,后跟后跟 字符的字符的ASCII碼值碼值; (2)八進(jìn)制表)八進(jìn)制表 示:示:ddd; 例如:例如:101 (3)十六進(jìn)制)十六進(jìn)制 表示:表示:xhh; 例如:例如:x41 表表2-2C+中常用轉(zhuǎn)義序列符中常用轉(zhuǎn)義序列符 2.2.2常量(續(xù))常量(續(xù)) 四、布爾常量四、布爾常量 有兩個值:有兩個值:true和和false; 五、字符串常量(串常量,字符串)五、字符串常量(串常量,字符串) v一對一對雙引號雙引號括起的括起的字符序列字符序列,字符序列可以,字符序列可以 包含包含空格空格、轉(zhuǎn)義序列轉(zhuǎn)義序列或或任何其他字符任何其他字符,這些,這些 字符不一定

39、是字符不一定是C+字符集中的字符,只要字符集中的字符,只要C+ 編譯器支持即可;編譯器支持即可; 例如:例如:This is a string; v字符串常量與字符常量的區(qū)別:字符串常量與字符常量的區(qū)別: 2.2.2常量(續(xù))常量(續(xù)) v由一個由一個字符型變量字符型變量存存 放放 v由由一維數(shù)組一維數(shù)組存放存放 字符常量字符常量字符串常量字符串常量 v用用單引號單引號括起括起v用用雙引號雙引號括起括起 v字符串有一個字符串有一個結(jié)束符結(jié)束符, 結(jié)束符用結(jié)束符用0表示表示 v字符常量字符常量a在內(nèi)存中在內(nèi)存中 占用占用一個字節(jié)一個字節(jié) v字符串常量字符串常量a在內(nèi)在內(nèi) 存中占用存中占用兩個字節(jié)

40、兩個字節(jié) v可進(jìn)行加、減法運(yùn)算可進(jìn)行加、減法運(yùn)算v可進(jìn)行連接、拷貝運(yùn)算可進(jìn)行連接、拷貝運(yùn)算 2.2.2常量(續(xù))常量(續(xù)) 六、符號常量六、符號常量 v用來用來表示表示C+中的常量中的常量,即用一個與常量相關(guān),即用一個與常量相關(guān) 的標(biāo)識符來替代常量的標(biāo)識符來替代常量; v優(yōu)點(diǎn):優(yōu)點(diǎn):增加可讀性,增強(qiáng)可維護(hù)性;增加可讀性,增強(qiáng)可維護(hù)性; 例如:例如:PI表示表示3.1415926 v定義方法:使用定義方法:使用類型說明符類型說明符const; 例如:例如:const int size=80; v定義的符號常量定義的符號常量必須初始化必須初始化; v一個符號常量可看作是一個一個符號常量可看作是一個

41、只讀變量只讀變量,由,由 const定義的常量的定義的常量的值不可以改變值不可以改變; Line1:#include Line2:const double pi=3.1415; Line3:const double r; Line4:void main() Line5: Line6: double perimeter,area; Line7: perimeter=2*pi*r; Line8: pi=3.14; Line9: area=pi*r*r; Line10: coutperimeter, areaendl; Line11: const double r=3.2;錯誤錯誤 錯誤,不能修改錯

42、誤,不能修改pi的值的值 2.2.2常量(續(xù))常量(續(xù)) 2.3枚舉類型枚舉類型 枚舉類型是若干個有名字的整型常量的集枚舉類型是若干個有名字的整型常量的集 合合; 2.3.1枚舉聲明和枚舉變量枚舉聲明和枚舉變量 一、枚舉聲明一、枚舉聲明 venum ; v由若干個枚舉符組成,多個枚舉符由若干個枚舉符組成,多個枚舉符 之間用逗號分隔;之間用逗號分隔; v枚舉符是用標(biāo)識符表示的整型常量,又稱枚枚舉符是用標(biāo)識符表示的整型常量,又稱枚 舉常量;舉常量; v枚舉常量的值枚舉常量的值默認(rèn)為默認(rèn)為最前邊的一個為最前邊的一個為0,其,其 后的值后的值依次加依次加1; v枚舉常量的值也枚舉常量的值也可顯式定義可

43、顯式定義,未顯式定義的,未顯式定義的 則在前一個值的基礎(chǔ)上加則在前一個值的基礎(chǔ)上加1; 2.3.1枚舉聲明和枚舉變量(續(xù)枚舉聲明和枚舉變量(續(xù)) 二、枚舉變量二、枚舉變量 v例如:例如: enum day Sun,Mon,Tue,Wed,Thu,Fri,Sat; enum day Sun=7,Mon=1, Tue,Wed,Thu,Fri,Sat; venum ; v多個枚舉變量之間用逗號分隔;多個枚舉變量之間用逗號分隔; v例如:例如: enum day d1,d2,d3; enum day Sun,Mon,Tue,Wed,Thu,Fri,Sat d1,d2,d3; v枚舉常量的枚舉常量的值不

44、一定互不相同值不一定互不相同; 2.3.2枚舉變量的值枚舉變量的值 v其值是該枚舉變量所屬的枚舉聲明的枚舉表的某其值是該枚舉變量所屬的枚舉聲明的枚舉表的某 一個枚舉符;一個枚舉符; v利用枚舉符所表示的整型值給枚舉變量賦值時,利用枚舉符所表示的整型值給枚舉變量賦值時, 需要進(jìn)行類型強(qiáng)制;需要進(jìn)行類型強(qiáng)制; v例如:例如: d1=Sun; d2=Sat; d3=(enum day)4; 2.4數(shù)組類型數(shù)組類型 數(shù)目固定、類型相同的若干個變量的有序數(shù)目固定、類型相同的若干個變量的有序 集合;集合; 2.4.1數(shù)組的定義數(shù)組的定義 1、格式、格式 2; ; 說明:說明: v方括號方括號( )表示數(shù)組

45、的維;表示數(shù)組的維; v某某維的大小維的大小必須是必須是大于大于0的的常量表達(dá)式常量表達(dá)式; 2、示例、示例 vint a3; vchar b35; vconst int size=80; vint msize; 2.4.2數(shù)組的賦值數(shù)組的賦值 1、數(shù)組元素的表示、數(shù)組元素的表示 v下標(biāo)表示:下標(biāo)表示: 2; ; 說明:說明: 下標(biāo)從下標(biāo)從0開始開始; 各個元素在內(nèi)存中按其各個元素在內(nèi)存中按其下標(biāo)的升序下標(biāo)的升序順序順序連續(xù)連續(xù)存存 放;放; v指針表示:指針表示: 2.4.2數(shù)組的賦值(續(xù))數(shù)組的賦值(續(xù)) 2、數(shù)組元素賦初值、數(shù)組元素賦初值 v利用初始值表(利用初始值表(由一對花括號括起來

46、的若干數(shù)由一對花括號括起來的若干數(shù) 據(jù)項(xiàng)組成)實(shí)現(xiàn);據(jù)項(xiàng)組成)實(shí)現(xiàn); v初始值表中數(shù)據(jù)項(xiàng)的個數(shù)要小于等于數(shù)組元素初始值表中數(shù)據(jù)項(xiàng)的個數(shù)要小于等于數(shù)組元素 的個數(shù)的個數(shù); v例如:例如:int a5=1,2,3,4,5; int a4=5,4; int b23=1,2,3,4,5,6; int b23=1,2,3,4,5,6; int c232=5,4,3,2,1,0; 3、數(shù)組元素的賦值、數(shù)組元素的賦值 例如:例如:int m3;m0=5;m1=3;m2=1; 2.4.3字符數(shù)組字符數(shù)組 說明:說明: v字符數(shù)組是指數(shù)組元素是字符數(shù)組是指數(shù)組元素是char類型類型的數(shù)組的數(shù)組; v注意注意字符

47、常量字符常量、字符數(shù)組字符數(shù)組與與字符串常量字符串常量的區(qū)別;的區(qū)別; 例如:例如: char s14=a, b, c, d;字符數(shù)組字符數(shù)組 char s25=a, b, c, d, 0; 字符數(shù)組字符數(shù)組 (字符串常量字符串常量) 等價于等價于 char s25=abcd; char s35=abcde; char s3 =abcde; int a,b cinab; 運(yùn)行時從鍵盤輸入:運(yùn)行時從鍵盤輸入: 12 34 2.5鍵盤輸入和屏幕輸出鍵盤輸入和屏幕輸出 一、鍵盤輸入一、鍵盤輸入 使用標(biāo)準(zhǔn)輸入流對象使用標(biāo)準(zhǔn)輸入流對象cin和提取運(yùn)算符和提取運(yùn)算符 鍵盤輸入和屏幕輸出都使用鍵盤輸入和屏幕

48、輸出都使用 include 二、屏幕輸出二、屏幕輸出 2.5鍵盤輸入和屏幕輸出鍵盤輸入和屏幕輸出(續(xù)續(xù)) 使用標(biāo)準(zhǔn)輸出流對象和插入運(yùn)算符使用標(biāo)準(zhǔn)輸出流對象和插入運(yùn)算符 int a=12; double b=12.34 cout“ab的值的值 為:為:”a,bendl; 2.5鍵盤輸入和屏幕輸出鍵盤輸入和屏幕輸出(續(xù)續(xù)) #include void main() int a,b;double m,n;char c,s20; coutab; coutmn; coutcs; couta,bendl; coutm,nendl; coutc,sendl; 例:對不同類型數(shù)據(jù)的輸入和輸出例:對不同類型數(shù)據(jù)

49、的輸入和輸出 v指針指針 v指針和數(shù)組指針和數(shù)組 v引用引用 2.6指針和引用指針和引用 2.6.1指針指針 1、什么是指針、什么是指針 v指針是用來存放某個變量的地址值的一種變量;指針是用來存放某個變量的地址值的一種變量; v指針的類型是它所指向指針的類型是它所指向 變量的類型;變量的類型; v指針本身數(shù)據(jù)值的類型是指針本身數(shù)據(jù)值的類型是 unsigned long int型;型; v例如:例如: int a(5); int *p= 內(nèi)存內(nèi)存 1000H 5 . a 地址值地址值 1000H 3000H p 2.6.1指針(續(xù))指針(續(xù)) 2、如何定義指針、如何定義指針 v例如:例如: in

50、t *pi; char (*pa)3; /數(shù)組指針數(shù)組指針 float *pl;int (*pf)(); /函數(shù)指針函數(shù)指針 char *pc; int *pp; * * , 1, * * ,2,; ; 3、指針的賦值(內(nèi)存地址值)、指針的賦值(內(nèi)存地址值) v指針必須被指針必須被賦值后賦值后才可才可使用使用; v一般變量、數(shù)組元素、結(jié)構(gòu)成員的一般變量、數(shù)組元素、結(jié)構(gòu)成員的地址值地址值為為變變 量名前加量名前加運(yùn)算符運(yùn)算符 double sin(double x); int *p= double (*pf)(double x); int c10,*p=c;pf=sin; 4、指針的運(yùn)算、指針的

51、運(yùn)算 v賦值運(yùn)算。例如:賦值運(yùn)算。例如:int a,*p=q=p; v一個指針可以加上或減去一個整數(shù)值;一個指針可以加上或減去一個整數(shù)值; v在一定條件下在一定條件下(指向同一數(shù)組的不同元素指向同一數(shù)組的不同元素),兩,兩 個指針可以相減;個指針可以相減; v在一定條件下在一定條件下(指向同一數(shù)組的不同元素指向同一數(shù)組的不同元素),兩,兩 個指針可以比較;個指針可以比較; 2.6.2指針和數(shù)組指針和數(shù)組 1、C+中中指針與數(shù)組的關(guān)系指針與數(shù)組的關(guān)系 vC+通過通過指針訪問數(shù)組中的每個元素;指針訪問數(shù)組中的每個元素; v在運(yùn)算表達(dá)式中,一個標(biāo)識在運(yùn)算表達(dá)式中,一個標(biāo)識數(shù)組數(shù)組對象的操作數(shù)對象的操

52、作數(shù) 在運(yùn)算表達(dá)式中被在運(yùn)算表達(dá)式中被自動轉(zhuǎn)換為一個指向數(shù)組對自動轉(zhuǎn)換為一個指向數(shù)組對 象的第一個元素對象的指針值象的第一個元素對象的指針值。 2、一維數(shù)組的指針表示法、一維數(shù)組的指針表示法 vC+中規(guī)定:任何一個數(shù)組的名字是一個常量中規(guī)定:任何一個數(shù)組的名字是一個常量 指針,其值是該數(shù)組的首元素的地址值指針,其值是該數(shù)組的首元素的地址值; v例如:例如:int a5; 數(shù)組表示法:數(shù)組表示法:ai,i=0,1,2,3,4 指針表示法:指針表示法:*(a+i) a與與 v數(shù)組表示法:數(shù)組表示法:biji=0,1; j=0,1,2,3,4 v指針表示法:指針表示法: *(*(b+i)+j) *(

53、bi+j) (*(b+i)j ( int i,j; i=a0+a4; j=*(a+2)+*(a+4); coutiendljendl; 輸輸 出出 6 4 4a1 5a0 3a2 2a3 1a4 a a+2 a+4 2.6.2指針和數(shù)組(續(xù))指針和數(shù)組(續(xù)) 例例2.2:分析下列程序的輸出結(jié)果。:分析下列程序的輸出結(jié)果。 #include void main() static char s1 =abcde, s25=m, n, p, q, 0; char *ps=s1; couts1 or s2endl; couts21s22s13s14endl; cout*ps*(ps+2)*(ps+4)*

54、ps+2endl; 輸輸 出出 abcde or mnpq npde ace99 a的ASCII碼值 為0 x61,即97 2.6.2指針和數(shù)組(續(xù))指針和數(shù)組(續(xù)) 例例2.3:分析下列程序的輸出結(jié)果。:分析下列程序的輸出結(jié)果。 #include void main() static char t35=abcd, efgh, ijkl, mnop, qrst, uvwx; coutt123*(t12+3)*(*(*(t+1)+2)+3) *(*(t1+2)+3)endl; cout*tt*(*(t+1)+1)tt02 t*t+1endl; 輸輸 出出 xxxx abcdqrstijklbcd

55、 2.6.3引用引用 v對對象對對象存儲地址的抽象存儲地址的抽象,但引用不是變量,但引用不是變量 或?qū)ο螅驅(qū)ο?,它不占存儲空間不占存儲空間; v引用有類型引用有類型; v引用是引用是變量的別名變量的別名; 1、定義格式、定義格式 ); 或或 ; 2、初始化與賦值、初始化與賦值 v定義引用時必須初始化定義引用時必須初始化; v可以將一個引用可以將一個引用賦給某個變量賦給某個變量; v引用可引用可被賦值被賦值; 2.6.3引用(續(xù))引用(續(xù)) 示例:示例: int a=3; int int n=m; int *p= m=m+5; 3a8 p m 3n 定義引用并初始化定義引用并初始化 將引用賦

56、值給變量將引用賦值給變量 a=8,對引用的操作就,對引用的操作就 是對被引用者的操作是對被引用者的操作 3、引用的功能、引用的功能 v功能:用做函數(shù)的參數(shù)或函數(shù)的返回值;功能:用做函數(shù)的參數(shù)或函數(shù)的返回值; v注意:函數(shù)注意:函數(shù)不能返回對局部對象的引用不能返回對局部對象的引用; 2.6.3引用(續(xù))引用(續(xù)) 示例:示例: int return r; 錯,錯,r是局部對象是局部對象 4、指針與引用的區(qū)別、指針與引用的區(qū)別(教材教材P159有錯有錯) v指針通過地址間接訪問某個變量,引用通過別指針通過地址間接訪問某個變量,引用通過別 名直接訪問某個變量;名直接訪問某個變量; v引用必須初始化,

57、一旦被初始化后不得再作為引用必須初始化,一旦被初始化后不得再作為 其他變量的別名;其他變量的別名; 正確:正確:int 2.6.3引用(續(xù))引用(續(xù)) 例例2.4:分析下列程序的輸出結(jié)果。:分析下列程序的輸出結(jié)果。 #include void main() int val(5); int refv=refv+5; coutvalendl; int *p= cout*ptval1endl; 輸輸 出出 10 1010 2.6.3引用(續(xù))引用(續(xù)) 例例2.5:分析下列程序的輸出結(jié)果。:分析下列程序的輸出結(jié)果。 #include int return r; void main() int a=1

58、,3,5,7,9; f(2,a)=55; for(i=0;i5;i+) coutai、=、=、=、!= v前四種優(yōu)先級高于后兩種;前四種優(yōu)先級高于后兩種; 2.7.3邏輯運(yùn)算符邏輯運(yùn)算符 v雙目運(yùn)算符:雙目運(yùn)算符: ); v功能功能:返回其后的類型說明符或表達(dá)式所表示:返回其后的類型說明符或表達(dá)式所表示 的數(shù)在內(nèi)存中所占的字節(jié)的數(shù)在內(nèi)存中所占的字節(jié); 4、單目運(yùn)算符、單目運(yùn)算符); v 格式:格式: ( ();); 或或 ( ) ; 2.7.6其他運(yùn)算符(續(xù))其他運(yùn)算符(續(xù)) v強(qiáng)制類型轉(zhuǎn)換可將高類型轉(zhuǎn)換為低類型,是一強(qiáng)制類型轉(zhuǎn)換可將高類型轉(zhuǎn)換為低類型,是一 種種不安全不安全的轉(zhuǎn)換的轉(zhuǎn)換; 示

59、例:示例: double f(3.85); int h; h=int(f); v該轉(zhuǎn)換是該轉(zhuǎn)換是暫時的暫時的,一次性的一次性的; v 將低類型轉(zhuǎn)換為高類型,不影響數(shù)據(jù)精度將低類型轉(zhuǎn)換為高類型,不影響數(shù)據(jù)精度 示例:示例: int a(3),m; double b; b=3.56+double(a); m=a+5; 2.7.7運(yùn)算符的優(yōu)先級和結(jié)合性運(yùn)算符的優(yōu)先級和結(jié)合性 vP48,表,表3.1 v表達(dá)式的種類表達(dá)式的種類 v表達(dá)式的值和類型表達(dá)式的值和類型 v表達(dá)式中的類型轉(zhuǎn)換表達(dá)式中的類型轉(zhuǎn)換 2.8表達(dá)式表達(dá)式 2.8.1表達(dá)式的種類表達(dá)式的種類 v由運(yùn)算符和操作數(shù)組成的式子;由運(yùn)算符和操作

60、數(shù)組成的式子; v常見的表達(dá)式常見的表達(dá)式 算術(shù)表達(dá)式;算術(shù)表達(dá)式; 邏輯表達(dá)式;邏輯表達(dá)式; 關(guān)系表達(dá)式;關(guān)系表達(dá)式; 賦值表達(dá)式;賦值表達(dá)式; 條件表達(dá)式;條件表達(dá)式; 逗號表達(dá)式;逗號表達(dá)式; 2.8.1表達(dá)式的種類(續(xù))表達(dá)式的種類(續(xù)) v注意事項(xiàng):注意事項(xiàng): 連續(xù)的兩個運(yùn)算符之間用空格分隔;連續(xù)的兩個運(yùn)算符之間用空格分隔; 可用括號來改變運(yùn)算符優(yōu)先級;可用括號來改變運(yùn)算符優(yōu)先級; 過長的表達(dá)式可分成幾個表達(dá)式;過長的表達(dá)式可分成幾個表達(dá)式; 2.8.2表達(dá)式的值和類型表達(dá)式的值和類型 一、確定表達(dá)式的值一、確定表達(dá)式的值 二、表達(dá)式求值方法與確定類型的方法二、表達(dá)式求值方法與確定類

溫馨提示

  • 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

提交評論