![教學(xué)課件:《C++程序設(shè)計(jì)教程》章韻_第1頁(yè)](http://file4.renrendoc.com/view/077d081529ced01e138850d49e5498b7/077d081529ced01e138850d49e5498b71.gif)
![教學(xué)課件:《C++程序設(shè)計(jì)教程》章韻_第2頁(yè)](http://file4.renrendoc.com/view/077d081529ced01e138850d49e5498b7/077d081529ced01e138850d49e5498b72.gif)
![教學(xué)課件:《C++程序設(shè)計(jì)教程》章韻_第3頁(yè)](http://file4.renrendoc.com/view/077d081529ced01e138850d49e5498b7/077d081529ced01e138850d49e5498b73.gif)
![教學(xué)課件:《C++程序設(shè)計(jì)教程》章韻_第4頁(yè)](http://file4.renrendoc.com/view/077d081529ced01e138850d49e5498b7/077d081529ced01e138850d49e5498b74.gif)
![教學(xué)課件:《C++程序設(shè)計(jì)教程》章韻_第5頁(yè)](http://file4.renrendoc.com/view/077d081529ced01e138850d49e5498b7/077d081529ced01e138850d49e5498b75.gif)
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、C+程序設(shè)計(jì)語(yǔ)言121.1 計(jì)算機(jī)程序設(shè)計(jì)語(yǔ)言1.2 C+程序設(shè)計(jì)語(yǔ)言 第1章 C+概述1.1 程序設(shè)計(jì)的基本概念1. 計(jì)算機(jī)與程序計(jì)算機(jī)已滲入到我們?nèi)粘I畹姆椒矫婷?,它幾乎無(wú)所不能;計(jì)算機(jī)所做的一切都是人所賦予的;計(jì)算機(jī)程序是人向計(jì)算機(jī)發(fā)出的指令的有序集計(jì)合;人機(jī)交互需要特定的計(jì)算機(jī)語(yǔ)言程序設(shè)計(jì)語(yǔ)言。31.1 程序設(shè)計(jì)的概念2. 計(jì)算機(jī)程序設(shè)計(jì)語(yǔ)言 計(jì)算機(jī)的工作是受程序控制的,任何一個(gè)計(jì)算機(jī)程序必須由某種程序設(shè)計(jì)語(yǔ)言來(lái)描述。 程序設(shè)計(jì)語(yǔ)言經(jīng)歷了從機(jī)器語(yǔ)言、匯編語(yǔ)言到高級(jí)語(yǔ)言這樣一個(gè)發(fā)展過(guò)程。C+程序設(shè)計(jì)語(yǔ)言屬于高級(jí)語(yǔ)言。4機(jī)器語(yǔ)言:5直接用計(jì)算機(jī)能識(shí)別的二進(jìn)制指令來(lái)書(shū)寫(xiě);直接對(duì)計(jì)算機(jī)硬件產(chǎn)
2、生作用;不同型號(hào)計(jì)算機(jī)的“機(jī)器語(yǔ)言”不一樣,難理解,不利于被掌握和推廣,只有少數(shù)計(jì)算機(jī)專家或者從事相關(guān)工作的專業(yè)技術(shù)人員才能使用。匯編語(yǔ)言:6是符號(hào)化的機(jī)器語(yǔ)言,用簡(jiǎn)單助記符來(lái)代替機(jī)器語(yǔ)言中的操作指令; 例如,機(jī)器語(yǔ)言中,二進(jìn)制代碼10110110代表加法運(yùn)算,匯編語(yǔ)言中則用助記符ADD表示。較易理解,方便推廣和應(yīng)用;需要編譯成機(jī)器語(yǔ)言才能被計(jì)算機(jī)執(zhí)行,但編譯工作可以用專門的工具軟件完成。高級(jí)語(yǔ)言:7以近似于自然語(yǔ)言的方式描述程序指令; 例如, if ( x0 ) y = x ; else y = -x ; 更易理解,更方便推廣和應(yīng)用;同樣需要編譯成機(jī)器語(yǔ)言才能被計(jì)算機(jī)執(zhí)行;例如,C+、C、B
3、asic、Java等程序設(shè)計(jì)語(yǔ)言均屬于高級(jí)程序設(shè)計(jì)語(yǔ)言。1.2 C+程序設(shè)計(jì)語(yǔ)言1. 簡(jiǎn)單C+程序框架結(jié)構(gòu)#include using namespace std;int main( ) cout 變量1 變量2 對(duì)象n ;1.3 C+程序設(shè)計(jì)簡(jiǎn)介9只能用變量接受輸入的數(shù)據(jù);用戶可以用以下兩種方式從鍵盤(pán)輸入數(shù)據(jù):所有數(shù)據(jù)全部輸入后再回車確認(rèn),但各數(shù)據(jù)之間以空格分隔;每個(gè)數(shù)據(jù)輸入后立即回車確認(rèn)。例:如果希望將鍵盤(pán)輸入的整數(shù)10,11, 12, 13,14 分別依次存入變量 a, b, c, d, 怎樣鍵盤(pán)輸入數(shù)據(jù)?int a, b, c, d;cin a;cin b c d ;C+標(biāo)準(zhǔn)輸出格式為
4、:cout 數(shù)據(jù)1 數(shù)據(jù)2 數(shù)據(jù)n;1.3 C+程序設(shè)計(jì)簡(jiǎn)介10輸出對(duì)象可以是變量、表達(dá)式或立即數(shù);當(dāng)輸出對(duì)象是變量或表達(dá)式時(shí),表示輸出變量或表達(dá)式所代表的數(shù)據(jù);輸出的各個(gè)數(shù)據(jù)之間應(yīng)適當(dāng)分隔以增強(qiáng)輸出結(jié)果的可讀性。例:試分析下列程序段執(zhí)行之后的輸出結(jié)果。int a=2, b=3, c=4, d=5;cout “a+b=“a+bt“c+d=“c+dendl; cout2 的值為 true; 表達(dá)式 (12) + (41) 的值為 0+1+1=22整型2. 2 基本數(shù)據(jù)類型 關(guān)鍵字:int表示分為十進(jìn)制、八進(jìn)制、十六進(jìn)制等表現(xiàn)形式;缺省進(jìn)制為十進(jìn)制;八進(jìn)制數(shù)是以數(shù)字0開(kāi)頭的整數(shù): 數(shù)碼07,逢八進(jìn)
5、一;十六進(jìn)制數(shù)是以0 x或0X開(kāi)頭的整數(shù):數(shù)碼09, af, 逢十六進(jìn)一,數(shù)碼 af 大小寫(xiě)均可。例: 28,-3,0,+55,0236, -063,0 x56EF,0X43ab,-0 x857 3實(shí)型2. 2 基本數(shù)據(jù)類型 實(shí)型數(shù)據(jù)也稱浮點(diǎn)型,關(guān)鍵字:float(單精度)、double(雙精度)。實(shí)型數(shù)據(jù)可以定點(diǎn)表示和浮點(diǎn)表示定點(diǎn)表示,例:0.1237;浮點(diǎn)表示(指數(shù)形式),例:2.765E3,1e-2,-0.3e1;關(guān)于浮點(diǎn):E可以大寫(xiě)或小寫(xiě);E前面必須有數(shù)字(1不能省略);E后面必須是整數(shù)。 4字符型2. 2 基本數(shù)據(jù)類型 關(guān)鍵字:char計(jì)算機(jī)內(nèi)部以字符的ASCII碼值(整數(shù))存儲(chǔ)字符
6、型數(shù)據(jù)(1個(gè)字節(jié))普通字符常量書(shū)寫(xiě)時(shí)用單引號(hào)標(biāo)記例:%,a,9。任何字符都可以用轉(zhuǎn)義字符形式表示常用轉(zhuǎn)義字符表示字符形式含義n換行a響鈴t水平制表符(Tab鍵)0空字符反斜杠單引號(hào)雙引號(hào)”2. 2 基本數(shù)據(jù)類型 任何字符均可以用其八進(jìn)制或十六進(jìn)制ASCII碼值表示成轉(zhuǎn)義形式:例如,160、x70都表示字符p。字符p的ASCII碼值為112,其八進(jìn)制為0160,十進(jìn)制為0 x70轉(zhuǎn)義表示時(shí)不可用十進(jìn)制,缺省為八進(jìn)制,十六進(jìn)制表示時(shí)略進(jìn)制標(biāo)志的前綴0。所以,字符p的轉(zhuǎn)義形式不可表示為以下形式: 0160 0 x70 5. 字符串一對(duì)單引號(hào)內(nèi)只能表示一個(gè)字符,多個(gè)字符可以組成字符串,字符串是用一對(duì)雙
7、引號(hào)括起來(lái)的字符集合。如:“Hello!”,“123456”等。 字符串常量均含有一個(gè)字符串結(jié)束標(biāo)志0 。字符串常量中所含字符的個(gè)數(shù)稱為字符串的長(zhǎng)度(不含字符串結(jié)束標(biāo)志)。6. 基本類型變量 變量是在程序中可以改變的量變量必須先定義后使用變量定義格式: 數(shù)據(jù)類型 變量名1,變量名2,變量名n;例如: int a,b,c; float x;定義變量的同時(shí)可以給變量賦值(兩種方式): int a=1,b,c(3); float x=3.71;可以給已定義的變量重新賦值: int a=5, b; a=10; b=20; a=a*b; 可以限定變量在程序中不允許改變: const int a=5, b
8、(6); int const c=10; const float x(0.26), y=1.2;const置于類型符號(hào)前或后;必須賦初值! C+語(yǔ)言中的運(yùn)算符包括算術(shù)運(yùn)算符、關(guān)系運(yùn)算符、邏輯運(yùn)算符、賦值運(yùn)算符等,將變量、常量和運(yùn)算符有機(jī)地結(jié)合起來(lái)就組成了表達(dá)式。2. 3 運(yùn)算符與表達(dá)式算術(shù)運(yùn)算符: +、-、*、/、%(求模)算術(shù)運(yùn)算符均為雙目運(yùn)算符除法運(yùn)算分整數(shù)除和實(shí)數(shù)除求模運(yùn)算功能是求兩個(gè)整數(shù)相除后的余數(shù)。2. 3 運(yùn)算符與表達(dá)式1. 算術(shù)運(yùn)算符例,寫(xiě)出下列各語(yǔ)句的輸出結(jié)果。 cout(1+a); /輸出結(jié)果:98 cout(5/3-8); /輸出結(jié)果:-7 cout(5%3*5/3.0);
9、 /輸出結(jié)果:3.33333例: int a=5, b; b=a=a-2; coutatb、=、5的值為 true (5!=4)=(8=2)的值為false 注意運(yùn)算符形式上與數(shù)學(xué)表達(dá)式的差異; 數(shù)學(xué)表達(dá)式:abc C+表達(dá)式:ab&bc2. 3 運(yùn)算符與表達(dá)式3. 關(guān)系運(yùn)算符邏輯運(yùn)算符: 邏輯非(!)、邏輯與(&)和邏輯或(|)功能:將多個(gè)關(guān)系連接起來(lái)表達(dá)更復(fù)雜的關(guān)系2. 3 運(yùn)算符與表達(dá)式4. 邏輯運(yùn)算符 邏輯非:取反操作若a的值為true,則!a的值為false;表達(dá)式a=0與表達(dá)式!a具有相同的邏輯值邏輯與: 邏輯乘操作僅當(dāng)a和b的值均為真時(shí),a&b的值為真,否則值為假。如:5&A值為
10、真, (39)&(2=1) 值為假。邏輯或: 邏輯加操作僅當(dāng)a和b的值均為假時(shí),a|b的值為假,否則值為真。如:(39)|(2=1)值為假。2. 3 運(yùn)算符與表達(dá)式aba&ba|b!a00001010111001011110邏輯運(yùn)算真值表C+語(yǔ)言中,當(dāng)能夠確定邏輯表達(dá)式的值時(shí),運(yùn)算將不再繼續(xù)進(jìn)行。2. 3 運(yùn)算符與表達(dá)式邏輯運(yùn)算的優(yōu)化:例: int a=4, b=7, c, d;c=(a=a+1)|(b=b+2);d=(a=0)&(b=a+b); coutatbtctdendl;(1)自增和自減運(yùn)算符 單目運(yùn)算符自增(+)和自減(-),分別表示變量自身加1和減1操作。不能對(duì)表達(dá)式進(jìn)行自增或自減
11、運(yùn)算。 2. 3 運(yùn)算符與表達(dá)式5. 其他運(yùn)算符例: int a=3,b=5, c=10, d; d=+a+b+c; coutatbtctdb?a+:+b;2. 3 運(yùn)算符與表達(dá)式條件運(yùn)算符的嵌套: int a=1,b=2, c=3, d=4, e=5, f; f=ab ? cd ? a:d e ? d:e:c; / f=ab?(cd?a+:(de?d:e):c; 是雙目運(yùn)算符格式:用逗號(hào)將一系列表達(dá)式列舉出來(lái)運(yùn)算規(guī)則:依次從左到右計(jì)算各表達(dá)式,交將最后一個(gè)表達(dá)式的值作為最終結(jié)果2. 3 運(yùn)算符與表達(dá)式(5)逗號(hào)運(yùn)算符 例 int a=2, b=4, c=6, d; d =(a+=1, b+=
12、2, c+=3,a+b+c);比較: int a=2, b=4, c=6, d; / 與上例變量初值相同 d = a+=1, b+=2, c+=3,a+b+c; / 沒(méi)有括號(hào)!2. 3 運(yùn)算符與表達(dá)式在C+表達(dá)式中,當(dāng)不同類型的運(yùn)算符混合運(yùn)算時(shí),優(yōu)先級(jí)高的運(yùn)算符將優(yōu)先運(yùn)算。C+運(yùn)算符的優(yōu)先級(jí)自高向低排序規(guī)律大致如下:括號(hào)類運(yùn)算符單目運(yùn)算符算術(shù)運(yùn)算符關(guān)系運(yùn)算符邏輯運(yùn)算符賦值運(yùn)算符三目運(yùn)算符(條件運(yùn)算符)逗號(hào)運(yùn)算符運(yùn)算符C+語(yǔ)言中部分運(yùn)算符的優(yōu)先級(jí)和結(jié)合性優(yōu)先級(jí)運(yùn)算符結(jié)合性1: ( ) - & + -左向右2! + - - + (類型) * & sizeof new delete右向左3* / %
13、 左向右4+ -左向右6、 、=左向右7= = !=左向右11&左向右12|左向右13? :右向左14=、+=、 -=、 *=、 /=、 %=右向左15,左向右2. 3 運(yùn)算符與表達(dá)式當(dāng)C+表達(dá)式中出現(xiàn)多種類型的數(shù)據(jù)混合進(jìn)行運(yùn)算時(shí),首先要進(jìn)行類型轉(zhuǎn)換。C+的類型轉(zhuǎn)換有自動(dòng)類型轉(zhuǎn)換、強(qiáng)制類型轉(zhuǎn)換2種。2. 4 類型轉(zhuǎn)換1自動(dòng)類型轉(zhuǎn)換字符型數(shù)據(jù)在表達(dá)式中以其ASCII碼值(整數(shù))參加運(yùn)算;為保證精度,實(shí)型數(shù)據(jù)自動(dòng)轉(zhuǎn)換成雙精度參加運(yùn)算。賦值運(yùn)算過(guò)程中,將右側(cè)操作數(shù)轉(zhuǎn)換成左邊操作數(shù)的類型后賦值。不同類型的數(shù)據(jù)自動(dòng)轉(zhuǎn)換成相同類型的數(shù)據(jù)后再運(yùn)算。轉(zhuǎn)換原則是:將精度較低的向精度較高的轉(zhuǎn)換。例: int a=
14、1; float x=3.5; char c=49; /將ASCII碼值為49的字符賦給c a=x; /a的值為3 coutF-Bendl; /輸出整數(shù)4 coutx+2endl; /輸出雙精度型數(shù)5.5 cout(a*6+x/2-c)end; /輸出雙精度型數(shù)-29.252. 4 類型轉(zhuǎn)換 強(qiáng)制類型轉(zhuǎn)換也稱顯式類型轉(zhuǎn)換,是指將一個(gè)表達(dá)式強(qiáng)制轉(zhuǎn)換到某個(gè)指定類型。其一般格式為: (數(shù)據(jù)類型名)表達(dá)式或 數(shù)據(jù)類型名(表達(dá)式)2強(qiáng)制類型轉(zhuǎn)換2. 4 類型轉(zhuǎn)換例如: cout(int)3.5; /輸出整數(shù)3 coutchar(97); /輸出字符a本章結(jié)束謝謝!2. 4 類型轉(zhuǎn)換第3章 流程控制語(yǔ)句C
15、+程序設(shè)計(jì)語(yǔ)言例3.1 編程根據(jù)輸入的球的半徑求球的體積知識(shí)概要:程序用變量代表所要處理的數(shù)據(jù);程序從主函數(shù)的第一條語(yǔ)句開(kāi)始執(zhí)行,執(zhí)行完所有的語(yǔ)句后程序終止;簡(jiǎn)單順序流程不足以解決復(fù)雜問(wèn)題。 1. 簡(jiǎn)單順序流程#includeusing namespace std;int main( ) const float pi=3.14; float v, r; coutr; v=4/3.0*pir*r*r; cout“球的體積 v=”vendl; return 0; 1 ) 最基本的if語(yǔ)句if (表達(dá)式) 語(yǔ)句;if (表達(dá)式) 語(yǔ)句1; 語(yǔ)句2; 復(fù)合語(yǔ)句2. if 條件控制例3.2 根據(jù)用戶輸入
16、的實(shí)數(shù),求出其絕對(duì)值并輸出。#includeusing namespace std;int main( ) float x; coutx; if (x0) x=-x; cout“該實(shí)數(shù)的絕對(duì)值為:”xendl; return 0; 語(yǔ)句 x=-x; 不一定執(zhí)行2. if 條件控制2 ) if else 語(yǔ)句 最基本的if語(yǔ)句只能表達(dá)“如果那么”的含義。而 if else 語(yǔ)句卻能表達(dá)“如果那么否則”的含義。if (表達(dá)式) 語(yǔ)句1;else 語(yǔ)句2;2. if 條件控制#include using namespace std;int main( ) int a, b; coutab; if (
17、ab) cout“a大于b”endl; else cout“a可能比b小”endl; cout“a也可能等于b”endl; return 0; 復(fù)合語(yǔ)句縮進(jìn)例3.3 對(duì)用戶輸入的兩個(gè)整數(shù)比較其大小。2. if 條件控制3 ) if 嵌套 實(shí)際應(yīng)用中我們可能面臨更多種選擇,可以將ifelse 語(yǔ)句擴(kuò)展:if語(yǔ)句的每一個(gè)分支均可能是嵌套的if語(yǔ)句。if (表達(dá)式1) 語(yǔ)句1;else if (表達(dá)式2) 語(yǔ)句2; else if (表達(dá)式3) 語(yǔ)句3; else 語(yǔ)句4;2. if 條件控制例3.4 編程求下列函數(shù)的值: 2. if 條件控制 #include using namespace st
18、d;int main(void) int x, y; coutx; if (x5) y=2; else if (x0) y=1; else if (x = = 0) y=0; else if (x=-5) y=-1; else y=-2; cout“f(x)=”yendl; return 0等于判斷書(shū)寫(xiě)格式自由注意復(fù)雜條件的表達(dá)方式:if語(yǔ)句層層遞進(jìn)表示 邏輯運(yùn)算符的使用2. if 條件控制例3.5 輸入一個(gè)年份year,計(jì)算這一年2月份的天數(shù)days,然后輸出days。 閏年的條件是:year能被4整除但不能被100整除,或者year能被400整除。 #include using names
19、pace std;int main(void) int year, days; coutyear; if ( (year%4=0&year%100!=0) | year%400=0 ) days=29; else days=28; coutyear“年2月份的天數(shù)為:”daysendl; return 0復(fù)雜條件2. if 條件控制例3.6 將鍵盤(pán)輸入的四個(gè)數(shù)存入一組變量后對(duì)該組變量從大到小排序 #include using namespace std;int main( ) int a,b,c,d, t; cinabcd; if(ab) t=a; a=b; b=t; if(ac) t=a;
20、a=c; c=t; if(ad) t=a; a=d; d=t; if(bc) t=b; b=c; c=t; if(bd) t=b; b=d; d=t; if(cd) t=c; c=d; d=t; couta,b,c,db) if (bc) a=a+1; else b=b+1; else if (cd) c=c+1; else d=d+1;if (ab) if (bc) a=a+1 ; else if (cd) c=c+1; else d=d+1 ;if (ab) if (bc) a=a+1 ; else if (cd) c=c+1 ; else d=d+1 ;2. if 條件控制switch語(yǔ)
21、句又稱開(kāi)關(guān)語(yǔ)句,它是C+的另一種分支方法 。switch (表達(dá)式) case 常量表達(dá)式 1: 語(yǔ)句序列1;break; case 常量表達(dá)式 2: 語(yǔ)句序列2;break; case 常量表達(dá)式 n: 語(yǔ)句序列n;break; default: 語(yǔ)句序列0;表達(dá)式的結(jié)果必須是整型、字符型或枚舉類型常量表達(dá)式的值必須是整型、字符型或枚舉類型的常量,不能是變量表達(dá)式3. switch 開(kāi)關(guān)控制例3.7 設(shè)計(jì)一個(gè)程序?qū)逆I盤(pán)上輸入的百分制成績(jī)轉(zhuǎn)換成對(duì)應(yīng)的五分制成績(jī)并輸出,90分以上為A,8089分為B,7079分為C,6069分為D,60分以下為E。條件語(yǔ)句 vs 開(kāi)關(guān)語(yǔ)句3. switch 開(kāi)
22、關(guān)控制用條件語(yǔ)句實(shí)現(xiàn):#include using namespace std;int main( ) int s; char c; cout s; if (s=90)c=A; else if (s=80) c=B; else if (s=70) c=C; else if (s=60) c=D; else c=E; cout “五分制分?jǐn)?shù)為: ”cendl; return 0;3. switch 開(kāi)關(guān)控制用開(kāi)關(guān)語(yǔ)句實(shí)現(xiàn):#include using namespace std;int main( ) int s; char c; cout s; switch (s/10) case 10 :
23、case 9 : c=A;break; case 8 : c=B ;break; case 7 : c=C ;break; case 6 : c=D ;break; default : c=E ; cout“五分制分?jǐn)?shù)為:”cendl; return 0;case 語(yǔ)句的順序不重要;case后的常量互不相同;default語(yǔ)句的位置不重要;可以沒(méi)有default語(yǔ)句;注意break的效果;3. switch 開(kāi)關(guān)控制1*2+2*3+3*4 = ?1*2+2*3+3*4+100*101= ? 引入循環(huán)結(jié)構(gòu)就可以簡(jiǎn)化程序中大量的重復(fù)操作。在C+語(yǔ)言中,循環(huán)結(jié)構(gòu)是由 while 語(yǔ)句,dowhile
24、 語(yǔ)句和 for 語(yǔ)句來(lái)實(shí)現(xiàn)的,為了更方便地控制程序流程,C+語(yǔ)言還提供了兩個(gè)循環(huán)輔助語(yǔ)句 break 和 continue 。4. 循環(huán)控制1 ) while循環(huán)例3.8 求1*2+2*3+3*4+100*101= ?while (表達(dá)式) 語(yǔ)句;#include using namespace std;int main( ) int n=1, s=0; while(n=100) s=s+n*(n+1); n+; return 0;4. 循環(huán)控制2 ) dowhile循環(huán)while循環(huán)表達(dá)的是“當(dāng)滿足條件時(shí)一直做某事”。do 語(yǔ)句; while (表達(dá)式) ;dowhile循環(huán)表達(dá)的是“一直
25、做某事直到不滿足條件為止”。有分號(hào)!4. 循環(huán)控制例3.9 求鍵盤(pán)輸入的50個(gè)整數(shù)中正數(shù)之積和負(fù)數(shù)之和并分別輸出。#include using namespace std;int main( ) int n=1, a, s1=1, s2=0; while(na; if (a0) s1*=a; else s2+=a; n+; cout“s1=“s1endl; cout“s2=“s2endl; return 0;while 循環(huán):#include using namespace std;int main( ) int n=1, a, s1=1, s2=0; do cina; if (a0) s1*
26、=a; else s2+=a; n+; while(n=50); cout“s1=“s1endl; cout“s2=“s2endl; return 0;dowhile 循環(huán):s1,s2的初值為什么不同?4. 循環(huán)控制3 ) for 循環(huán)實(shí)現(xiàn)循環(huán)應(yīng)注意三個(gè)方面的問(wèn)題:控制變量的初始化循環(huán)條件控制變量的值的更新for語(yǔ)句在書(shū)寫(xiě)形式上正好體現(xiàn)了這種緊密的邏輯關(guān)系。for (表達(dá)式1;表達(dá)式2;表達(dá)式3) 循環(huán)體語(yǔ)句;4. 循環(huán)控制1*2+2*3+3*4+100*101= ?while 循環(huán);#include using namespace std;int main( ) int n=1, s=0;
27、while(n=100) s+=n*(n+1); n+; cout“s=“sendl; return 0;for 循環(huán);#include using namespace std;int main( ) for(int n=1, s=0; n=100; n+) s+=n*(n+1); cout“s=“sendl; return 0;4. 循環(huán)控制關(guān)于for循環(huán)的一些說(shuō)明:for (表達(dá)式1;表達(dá)式2;表達(dá)式3) 語(yǔ)句;表達(dá)式1只執(zhí)行一次表達(dá)式2在每次準(zhǔn)備循環(huán)前執(zhí)行表達(dá)式3在每次循環(huán)后執(zhí)行各表達(dá)式均可省略,但分號(hào)不可省略表達(dá)式2省略表示循環(huán)條件成立4. 循環(huán)控制4 ) 循環(huán)嵌套一個(gè)循環(huán)的循環(huán)體可以
28、是另一個(gè)循環(huán),稱為循環(huán)嵌套。例3.10 打印8行7列的星號(hào)矩形#include using namespace std;int main( ) for( int i=0; i8; i+) for( int j=0; j7; j+) cout“*”; coutendl; return 0;如果改為j=i 呢 ?4. 循環(huán)控制各種循環(huán)的循環(huán)次數(shù)也可以是不確定的例3.11 不斷從鍵盤(pán)輸入若干個(gè)整數(shù),直到輸入整數(shù)0為止,求所有輸入整數(shù)的平均值。#include using namespace std;int main( ) int a, n=0; float s=0; couta; n+; for(
29、; a!=0 ; n+) s=s+a; couta; s=s/n; cout“s=“s/nendl; return 0;a的值決定了是否繼續(xù)輸入4. 循環(huán)控制5 ) continue 和 break 語(yǔ)句continue 和 break 語(yǔ)句用于提前開(kāi)始下一輪循環(huán)或中斷所有循環(huán)例3.12 將100200之間不能被整除的整數(shù)輸出。#include using namespace std;int main( ) for( int n=100; n=200; n+) if (n%3 = = 0) continue; coutnendl; return 0;4. 循環(huán)控制例3.13:打印半徑為整數(shù)12
30、0的所有圓的面積,如果面積超過(guò)100則不打印。#include using namespace std;int main( ) int r; float s, pi=3.14159; for( r=1; r100) break; cout“r=”rt“s=”sendl; return 0;switch語(yǔ)句中的break語(yǔ)句功能是否類似?4. 循環(huán)控制5. 習(xí)題2、求100200間的所有素?cái)?shù)4、求Fibonacci數(shù)列的前20項(xiàng) (F1=1, F2=1,F(xiàn)3=F2+F1, Fn=Fn-1+Fn-2)1、求 a + aa + aaa + + aaaa = ? n個(gè)a5、求所有的水仙花數(shù),即各位數(shù)字
31、的立方和等于該數(shù)本身的3位整數(shù) 如153=13+ 53 + 33。3、用以下公式求的近似值,直到最后一項(xiàng)絕對(duì)值小于10-6為止6、用二分法求方程x2-3-5x=0在3,10區(qū)間的一個(gè)解。要求誤差不 大于10-6課后練習(xí)5. 習(xí)題C+實(shí)用教程第四章 數(shù)組和指針第 四 章 數(shù)組和指針4.1 數(shù)組4.4 結(jié)構(gòu)體4.3 字符串4.2 指針4.5 枚舉類型4.6 引用類型4.1 數(shù)組由具有各類特殊功能的信息(程序)組成1. 計(jì)算機(jī)系統(tǒng)計(jì)算機(jī)系統(tǒng)計(jì)算機(jī)的實(shí)體,如主機(jī)、外設(shè)等一、 計(jì)算機(jī)的軟硬件概念硬件軟件4.1 數(shù)組數(shù)組是由數(shù)目固定、類型相同的若干個(gè)變量組成的有序集合,該集合的名字稱為數(shù)組名,每個(gè)變量稱為
32、數(shù)組的元素。 通常用數(shù)組名和下標(biāo)來(lái)表示數(shù)組中的某個(gè)元素,因此數(shù)組中的元素也稱為下標(biāo)變量??梢韵窕緮?shù)據(jù)類型的變量一樣對(duì)數(shù)組中的元素賦值或?qū)⑵鋺?yīng)用于其它表達(dá)式中。 數(shù)組按維數(shù)的不同可分為一維數(shù)組和多維數(shù)組;按數(shù)組元素的類型不同可分為整型數(shù)組、浮點(diǎn)型數(shù)組、字符數(shù)組等。一、一維數(shù)組的定義和使用1. 一維數(shù)組的定義 定義一維數(shù)組的一般格式: 存儲(chǔ)類型 ; 數(shù)組名后的方括號(hào)稱為數(shù)組下標(biāo)運(yùn)算符,其內(nèi)部的必須為正整數(shù),它表示該數(shù)組所能容納元素的最大數(shù)目。 數(shù)組定義中的必須由字面常量、const類型的常量或宏定義的標(biāo)識(shí)符構(gòu)成,不能含有變量,且它的值一定要為正整數(shù)4.1 在定義數(shù)組的同時(shí),可以對(duì)數(shù)組中的元素賦初
33、值,稱為數(shù)組的初始化。通常用初始值表實(shí)現(xiàn)。數(shù)組的初始化有如下幾種形式: (1)在初始值表中給出數(shù)組中各元素的初始值。 (2)在初始值表中給出數(shù)組中部分元素的初始值,此時(shí)系統(tǒng)自動(dòng)將其它元素置0,此時(shí)初始值表不能為空。 (3)在定義數(shù)組時(shí),不直接指定數(shù)組的大小。此時(shí)編譯系統(tǒng)會(huì)根據(jù)初始值表中元素的個(gè)數(shù)來(lái)確定數(shù)組的大小 4.1 2一維數(shù)組的應(yīng)用 編譯系統(tǒng)為數(shù)組分配連續(xù)的內(nèi)存空間。 數(shù)組中的每個(gè)元素都有一個(gè)確定的序號(hào)來(lái)表示它在內(nèi)存中的位置,該序號(hào)是從零開(kāi)始的。通過(guò)該序號(hào)可以引用數(shù)組中每一個(gè)元素,其一般格式如下: ; 其中是一個(gè)值為非負(fù)整數(shù)表達(dá)式,其值表示該元素的在數(shù)組中的序號(hào),稱為元素的下標(biāo),在引用數(shù)組
34、中的元素時(shí),要避免下標(biāo)越界。4.1 數(shù)組中的元素與普通的變量在使用上沒(méi)有太大區(qū)別,可以對(duì)它們賦值,也可將它們參與其它運(yùn)算。 一維數(shù)組所占用內(nèi)存空間的大小為: sizeof()= 數(shù)組大小*sizeof()4.1二、多維數(shù)組的定義和使用1. 二維數(shù)組的定義 二維數(shù)組的定義格式: 存儲(chǔ)類型 ; 其中,稱為數(shù)組的行數(shù),稱為數(shù)組的列數(shù)。二維數(shù)組中元素的個(gè)數(shù)為:*。 4.1 在引用二維數(shù)組中的元素時(shí),要指明該元素在二維數(shù)組中所處的行號(hào)和列號(hào)。表示二維數(shù)組中元素的一般格式為:; 其中和分別表示該元素所在的行和列,稱為行下標(biāo)和列下標(biāo)。 二維數(shù)組可以看作一維數(shù)組的直接推廣。 二維數(shù)組中的元素在存儲(chǔ)器中的排列規(guī)
35、則是:先按行進(jìn)行存放,每一行中的元素再按其列下標(biāo)從小到大進(jìn)行排列。4.1 2.二維數(shù)組的初始化 對(duì)二維數(shù)組的初始化有如下幾種方法: (1) 以行為單位,對(duì)數(shù)組中的元素進(jìn)行初始化。 (2) 用類似于一維數(shù)組初始化的方式對(duì)二維數(shù)組進(jìn)行數(shù)組進(jìn)行初始化。 (3) 在定義二維數(shù)組時(shí)不指定數(shù)組的行數(shù),此時(shí)必須對(duì)該數(shù)組進(jìn)行初始化,系統(tǒng)將根據(jù)初始化的數(shù)據(jù),自動(dòng)確定數(shù)組的行數(shù)。注意,此時(shí)不能省略數(shù)組的列數(shù)。4.1 3.二維數(shù)組的應(yīng)用 例 設(shè)計(jì)一個(gè)程序,定義一個(gè)4行5列的二維數(shù)組并初始化,求出數(shù)組中元素的平均值、最大元素、最小元素以及最大元素和最小元素的位置(行號(hào)和列號(hào))。 例 已知三行二列的矩陣a與二行三列矩陣
36、b,求這兩矩陣的積c=ab。4.14.2 指針一、指針變量的說(shuō)明 每一個(gè)存儲(chǔ)單元都有唯一的一個(gè)編號(hào)與其對(duì)應(yīng),該編號(hào)稱為相應(yīng)存儲(chǔ)單元的地址。 編譯系統(tǒng)在對(duì)一個(gè)變量進(jìn)行操作時(shí),都是通過(guò)尋找其相應(yīng)的地址而實(shí)現(xiàn)對(duì)相應(yīng)的存儲(chǔ)單元中的內(nèi)容進(jìn)行操作。 可以用取地址運(yùn)算符“&”來(lái)獲取編譯器為變量分配的地址值。一般格式為:& 該運(yùn)算返回變量的地址。 變量的地址值通常是一個(gè)無(wú)符號(hào)整數(shù),它也稱為變量的指針,簡(jiǎn)稱指針。 我們也可以定義一個(gè)變量,該變量用來(lái)存放指針,我們稱之為指針變量,指針變量的值是某個(gè)存儲(chǔ)單元的地址。 4.2 說(shuō)明一個(gè)指針變量的一般格式為: 存儲(chǔ)類型 * ,*; 其中“*”號(hào)為指針運(yùn)算符。為另一個(gè)存儲(chǔ)
37、單元(該存儲(chǔ)單元中存放的數(shù)據(jù)稱為該指針變量所指向的數(shù)據(jù))的地址,而存儲(chǔ)類型和分別為該指針變量所指向數(shù)據(jù)的存儲(chǔ)類型和類型,可簡(jiǎn)稱為指針變量的類型。4.2 編譯系統(tǒng)在編譯指針變量時(shí)將會(huì)有兩個(gè)存儲(chǔ)空間與其相關(guān),一個(gè)為指針變量本身所占用的空間,由于它存放的是地址,因此該空間通常與int類型的數(shù)據(jù)所占用的空間相同,為4個(gè)字節(jié);另一個(gè)為該指針變量所指向的數(shù)據(jù)所占用的存儲(chǔ)空間。如圖下圖所示(以字符型指針ptrch1為例):4.220001ptrch1:ptrch1所指向的數(shù)據(jù):地址為20001 指針變量的初始化方法有兩種: (1) 利用另一個(gè)同類型變量的地址對(duì)該指針變量進(jìn)行初始化。 (2) 第二種方法是通過(guò)
38、強(qiáng)制類型轉(zhuǎn)換用一個(gè)整型常數(shù)直接初始化指針類型的變量。這種方法必須在清楚目前存儲(chǔ)空間那些“空閑”的前提下才能使用,否則在程序運(yùn)行過(guò)程中將會(huì)出現(xiàn)致命錯(cuò)誤。 4.2 指針變量的值始終是一個(gè)地址,它是一個(gè)無(wú)符號(hào)整型數(shù)據(jù)。 指針變量所指向的數(shù)據(jù)的類型與指針的類型一致,它的值可以用如下的方法獲得:* 這里的運(yùn)算符“*”稱為取內(nèi)容運(yùn)算符。該運(yùn)算符的運(yùn)算結(jié)果為作為其操作數(shù)的指針變量所指向的數(shù)據(jù)的值。 4.2 二、指針變量的操作 1、指針變量的賦值運(yùn)算 (1) 將一個(gè)變量的地址直接賦給同類型的指針變量。 (2)同類型的指針之間可以互相賦值,此時(shí)這兩個(gè)指針指向同一個(gè)內(nèi)存單元。 (3)不同類型的指針變量之間可以通過(guò)
39、類型強(qiáng)制轉(zhuǎn)換互相賦值。但這樣的賦值通常沒(méi)有價(jià)值。4.2 可以將一個(gè)整型常數(shù)賦給指針變量,此時(shí)必須要經(jīng)過(guò)強(qiáng)制類型轉(zhuǎn)換,這種賦值方法要慎重使用。但將0(NULL)賦給指針變量具有特殊的含義,它表示該指針變量為空,即該指針變量不指向任何存儲(chǔ)單元。 必須注意,在對(duì)指針變量所指向的存儲(chǔ)單元賦值之前,該指針變量必須有一個(gè)確定的值,否則將是十分危險(xiǎn)的。 4.2 2. 指針變量的算術(shù)運(yùn)算 指針變量常用的算術(shù)運(yùn)算為將指針變量加上或減去一個(gè)整型常數(shù)。 對(duì)于下面的運(yùn)算:=n; 計(jì)算機(jī)的實(shí)際處理如下:=sizeof()*n; 指針的+、-運(yùn)算與上述運(yùn)算類似。4.2 3. 指針變量的關(guān)系運(yùn)算 通常只進(jìn)行同類型的變量之間
40、的關(guān)系運(yùn)算,對(duì)于不同類型指針之間的關(guān)系運(yùn)算意義不大。常用的指針變量的關(guān)系運(yùn)算包括:判斷一個(gè)指針是否為空:= = 0;判斷兩個(gè)指針是否指向同一個(gè)存儲(chǔ)單元:= = ;比較兩個(gè)指針變量的大小等。 4.2 三、指針與數(shù)組 指針和數(shù)組有許多相通的地方,比如數(shù)組名就是可以看成是一個(gè)指針,而對(duì)于指針變量,也可以使用數(shù)組的下標(biāo)運(yùn)算符。 數(shù)組的起始地址稱為數(shù)組的指針,而將指向數(shù)組元素的指針變量稱為指向數(shù)組的指針變量。利用指向數(shù)組的指針變量來(lái)處理數(shù)組中的元素是一種常用的方法。 4.2 1. 一維數(shù)組與指針 在聲明一個(gè)一維數(shù)組之后,該數(shù)組名就可以作為一個(gè)指針使用。但數(shù)組名并不是一個(gè)真正的指針變量,因?yàn)樵诰幾g數(shù)組的聲
41、明語(yǔ)句時(shí),編譯系統(tǒng)并不會(huì)為數(shù)組名另外分配存儲(chǔ)空間,因此對(duì)數(shù)組名不能使用賦值語(yǔ)句以及+、-運(yùn)算符。 可以將一個(gè)指針變量指向同類型數(shù)組的首地址,這樣就可以通過(guò)對(duì)該指針變量訪問(wèn)數(shù)組元素。 4.2 對(duì)一維數(shù)組而言,數(shù)組名和指針有許多相通的地方,歸納如下: (1)數(shù)組名a表示數(shù)組的起始地址??梢岳胊+i表示的第i+1個(gè)元素的地址,即&ai; (2)將指針變量pInt指向數(shù)組a的起始地址的方法有兩種,即pInt=a或pInt=&a0; (3)在將pInt指向數(shù)組a的起始地址之后,pInt+i與a+i都表示數(shù)組a的第i+1個(gè)元素的地址,即&ai; 在將pInt指向數(shù)組a的起始地址之后,下列表達(dá)式都表示同一
42、個(gè)元素:ai、*(a+i)、*(pInt+i)、pInti等等。 4.2 2. 多維數(shù)組與指針 當(dāng)將一個(gè)指針指向二維數(shù)組的第一個(gè)元素時(shí),就可以用它訪問(wèn)該數(shù)組的所有元素。 對(duì)于二維數(shù)組,首先要分清行地址(行指針)和元素地址(元素指針)。 設(shè)有如下的一個(gè)二維數(shù)組: int a43=1,2,3,4,5,6,7,8,9,10,11,12; 該數(shù)組可以看成是一個(gè)一維數(shù)組a,該一維數(shù)組中有四個(gè)元素:a0, a1, a2, a3,每個(gè)元素又都是一個(gè)一維數(shù)組。4.2 數(shù)組名a表示的是數(shù)組的起始地址,也表示該二維數(shù)組第0行的首地址,它是一個(gè)行地址,而a0表示第0行第0個(gè)元素的地址。 行地址與元素地址要注意的問(wèn)題
43、是: (1) 行地址加上或減去一個(gè)常數(shù)還表示行地址;元素指針加上或減去一個(gè)常數(shù)還是元素的地址。 (2) 行地址前加上運(yùn)算符“*”表示該行第0個(gè)元素的地址,這里的符號(hào)“*”不是用來(lái)獲取指針?biāo)赶虻膬?nèi)容,它只是用來(lái)區(qū)分行地址和元素地址;而在元素指針前加運(yùn)算符“*”表示該元素的值。 (3) 行地址的值與該行第0個(gè)元素地址的值相同。 4.2 根據(jù)以上的說(shuō)明,對(duì)于二維數(shù)組a,下面的指針都是行地址:a、a+0、a+1、a+1+2,而a0、a1、a0+1、&a01、*a、*(a+0)、*(a+1) 都是元素地址。 除了上述的行地址外,還有另一類行指針,即&ai,它表示第i行的行指針。這里的符號(hào)“&”并不是取
44、地址符號(hào),因?yàn)榫幾g器并沒(méi)有為ai分配存儲(chǔ)空間,這里的符號(hào)“&”只是用來(lái)區(qū)分行地址和元素地址。 4.2 要記住兩個(gè)具有代表性的行地址:a+i和&ai,兩個(gè)具有代表性的元素地址:*(a+i)和ai。 行地址、元素地址以及元素總結(jié)如下: 4.2類 型表 示 形 式說(shuō) 明行地址a數(shù)組的起始地址、第0行的行地址a+i, &ai第i行的行地址a+i+j, &ai+j第i+j行的行地址元素地址*a, *(a+0), a0第0行第0列元素的地址ai, *(a+i), *&ai第i行第0列元素的地址ai+j,*(a+i)+j,*&ai+j,&aij第i行第j列元素的地址元素*a, *(a+0), *a0第0行第
45、0列元素*ai, *(a+i)第i行第0列元素*(ai+j),*(*(a+i)+j),*(*&ai+j), aij第i行第j列元素 四、動(dòng)態(tài)分配內(nèi)存 new運(yùn)算符可以為所創(chuàng)建的指針變量動(dòng)態(tài)地分配存儲(chǔ)空間,而運(yùn)算符delete則用于釋放動(dòng)態(tài)分配的存儲(chǔ)空間。 使用new運(yùn)算符的一般格式為:=new (初始值); 或=new ; 4.2 第一種形式為所指向的數(shù)據(jù)分配大小為sizeof()個(gè)字節(jié)的連續(xù)存儲(chǔ)空間,初始值表示為所分配的存儲(chǔ)空間指定初始值。 第二種形式為所指向的數(shù)據(jù)分配指定大小的數(shù)組空間,為整型變量或常量。 對(duì)于上述兩種情形,如果動(dòng)態(tài)分配不成功,則new運(yùn)算符返回NULL(0);如果成功分配
46、,則new運(yùn)算符返回所分配的存儲(chǔ)空間的首地址,并將該地址賦給。4.2 使用delete的一般格式為:delete; 或delete ; 第一種格式為將動(dòng)態(tài)分配給的內(nèi)存空間歸還給系統(tǒng),第二種格式為將動(dòng)態(tài)分配給的數(shù)組空間歸還給系統(tǒng)。 在用new運(yùn)算符為某個(gè)指針變量所指向的數(shù)據(jù)動(dòng)態(tài)分配存儲(chǔ)空間之后,必須用delete運(yùn)算符撤消,否則該存儲(chǔ)空間將一直被占用,直到關(guān)閉電腦。4.2 使用new和delete運(yùn)算符要注意如下幾點(diǎn): (1) new運(yùn)算符實(shí)際上是為指針變量指定一個(gè)確定的值,即用動(dòng)態(tài)的方式指定一個(gè)地址給指針變量。 (2) 如果new運(yùn)算符動(dòng)態(tài)分配內(nèi)存失?。▋?nèi)存中沒(méi)有符合要求的空閑的連續(xù)內(nèi)存單元)
47、,則返回NULL(0),此時(shí)指針為空指針。此時(shí),要進(jìn)行空指針判斷處理。 (3) 與數(shù)組一樣,動(dòng)態(tài)分配存放數(shù)組的內(nèi)存空間時(shí),也不能在分配空間的同時(shí)進(jìn)行初始化。4.2 (4) 可以用new運(yùn)算符動(dòng)態(tài)分配多維數(shù)組空間,但要注意的是,它返回的是行指針。當(dāng)撤消動(dòng)態(tài)分配二維數(shù)組空間時(shí),一定要指明數(shù)組的行數(shù),否則只能撤消第0行的內(nèi)存空間, (5) 用運(yùn)算符new動(dòng)態(tài)分配內(nèi)存空間的指針必須保護(hù)起來(lái),直到將該存儲(chǔ)空間撤消,否則不僅會(huì)帶來(lái)資源浪費(fèi),而且會(huì)引起一些意想不到的錯(cuò)誤。 4.2 五、其他類型指針 1、void指針 void指針是空類型的指針,也稱為無(wú)類型指針,它不指向任何類型,僅僅是一個(gè)地址。因此void
48、指針不能進(jìn)行指針運(yùn)算,也不能直接取其指針?biāo)赶虻臄?shù)據(jù)的值。 只有將void指針與其它類型的指針相關(guān)聯(lián),才能使用它??梢詫⑵渌愋偷闹羔樫x給void指針,但當(dāng)將void指針賦給其它類型的指針時(shí),必須進(jìn)行強(qiáng)制類型轉(zhuǎn)換。4.2 2、const類型指針 (1) 指向常量的指針 指向常量的指針是指指針?biāo)赶虻臄?shù)據(jù)為常量,定義這類指針的一般格式為: const *; 或const *; 指向常量的指針常用作函數(shù)的參數(shù),此時(shí),在函數(shù)體中不能改變?cè)撝羔標(biāo)赶虻臄?shù)據(jù)的值4.2 (2) 常量指針 常量指針是指指針變量的值為常量,定義常量指針的一般格式為: * const ; 注意,在定義常量指針時(shí)一定要對(duì)其初始化
49、。 4.2 (2) 指向常量的常量指針 定義指向常量的常量指針的一般格式為: const * const; 或const * const ; 4.24.3 字符串一、字符數(shù)組 說(shuō)明字符數(shù)組的一般格式為:存儲(chǔ)類型char ; 數(shù)組元素都以ASCII碼值的形式存放于內(nèi)存空間。 字符數(shù)組的初始化: (1) 通過(guò)初始值表對(duì)字符數(shù)組進(jìn)行初始化。初始值表中的元素為字符,各個(gè)字符之間用逗號(hào)隔開(kāi)。 (2) 用一個(gè)字符串來(lái)初始化字符數(shù)組。此時(shí),一定要注意字符串最后的結(jié)束標(biāo)志。注意,不能將一個(gè)字符串直接賦給一個(gè)字符數(shù)組名,或數(shù)組中的某個(gè)元素。 字符數(shù)組的使用與其它類型的數(shù)組類似,即可以用元素的下標(biāo)訪問(wèn)數(shù)組中的各個(gè)
50、元素。但由于字符數(shù)組作為一個(gè)整體可以當(dāng)成字符串來(lái)處理,因此在使用上就有自己的獨(dú)特之處,比如可以對(duì)字符數(shù)組進(jìn)行整體輸入輸出等等。 但在進(jìn)行整體輸入輸出時(shí)要注意: 1.字符數(shù)組的整體輸入并不受數(shù)組大小的限制。 2.當(dāng)字符數(shù)組的整體輸出時(shí),輸出到0為止4.3 字符數(shù)組的元素是按其ASCII碼值存放在內(nèi)存單元中的。字符型數(shù)組的元素的取值范圍為-128127,而無(wú)符號(hào)字符型數(shù)組元素的取值范圍為0255。由于這一特性,可以對(duì)字符數(shù)組中的元素進(jìn)行一些類似于整數(shù)的運(yùn)算。4.3 二、字符指針 表示字符串的指針我們又稱為字符指針,在很多的情況下都是用字符指針來(lái)表示字符串。 可以象字符數(shù)組那樣直接用字符串來(lái)初始化字
51、符指針 。 由于字符串的特殊性,字符指針與一般指針在使用上還是存在一定的差異。我們要充分了解這些差異。 4.3 字符指針與一般指針的差異主要表現(xiàn)在: (1) 字符指針可以進(jìn)行如下形式的賦值: pCh1=NanJing!; 而一般指針能夠進(jìn)行下述形式的賦值: *pInt=2; (2) 如果插入操作符的左操作數(shù)為字符指針,則將輸出整個(gè)字符串;如果為*pCh1,則只能輸出一個(gè)字符。如果插入操作符的左操作數(shù)為一般指針,則輸出該指針的值,為一個(gè)地址。4.3 可以將一個(gè)數(shù)組名賦給一個(gè)字符指針變量,表示將該字符指針變量指向字符數(shù)組的首地址,但反過(guò)來(lái)是不可以的,即不能將一個(gè)字符指針變量賦給一個(gè)字符數(shù)組名。 可
52、以將一個(gè)指針變量的值賦給另一個(gè)指針變量,這種賦值的結(jié)果是pCh1和pCh指向同一個(gè)存儲(chǔ)單元,當(dāng)其中一個(gè)指針變量所指向的數(shù)據(jù)的值改變時(shí),另一個(gè)變量所指向的數(shù)據(jù)也跟著改變。 在對(duì)字符指針進(jìn)行操作時(shí),要注意字符串的結(jié)束標(biāo)志”0” 。4.34.4 結(jié)構(gòu)體數(shù)組中的每一個(gè)元素屬于同一種數(shù)據(jù)類型,利用數(shù)組處理大量的同類型數(shù)據(jù)是很方便的。但是在實(shí)際應(yīng)用中,常常需要把不同類型而關(guān)系又非常密切的數(shù)據(jù)組織在一起,形成一個(gè)整體,以便于統(tǒng)一管理。 一種稱為結(jié)構(gòu)體的數(shù)據(jù)類型,可以用來(lái)描述這種類型的數(shù)據(jù)集。 定義結(jié)構(gòu)體類型的一般格式為: struct ; ; ; 其中,花括號(hào)內(nèi)是結(jié)構(gòu)體的內(nèi)容,由若干個(gè)變量構(gòu)成,這些變量的類
53、型可以不同,它們稱為結(jié)構(gòu)體的成員或分量,分量名與結(jié)構(gòu)體名不能相同。,在結(jié)構(gòu)體的最后一定要有一個(gè)分號(hào)。 4.4 由于定義結(jié)構(gòu)類型只是定義了一種數(shù)據(jù)類型,因此,當(dāng)編譯器編譯結(jié)構(gòu)體的定義時(shí),并不為結(jié)構(gòu)體中的成員分配任何內(nèi)存空間,從而在定義結(jié)構(gòu)體的成員時(shí),不能指定成員的存儲(chǔ)類型為auto、register、extern,但可以指定結(jié)構(gòu)體成員的存儲(chǔ)類型為static,其特點(diǎn)和作用將在以后介紹。4.4 在定義一個(gè)結(jié)構(gòu)體之后,就增加了一種新的數(shù)據(jù)類型??梢詣?chuàng)建該類型的變量。 可以用如下三種方法定義結(jié)構(gòu)體變量: (1)先定義結(jié)構(gòu)體類型,然后利用結(jié)構(gòu)名定義結(jié)構(gòu)體變量。一般格式為: 存儲(chǔ)類型 ,; 或 存儲(chǔ)類型s
54、truct , , 4.4 與基本數(shù)據(jù)類型類似,在定義結(jié)構(gòu)體類型的變量時(shí),也可對(duì)該變量進(jìn)行初始化,其方法與對(duì)數(shù)組的初始化方法類似,即采用用花括號(hào)括起來(lái)的初始值表。 注意,初始值表中的數(shù)據(jù)類型必須與結(jié)構(gòu)體中對(duì)應(yīng)元素的類型一致(兼容的除外),否則會(huì)產(chǎn)生編譯錯(cuò)誤。另外,初始值表中的數(shù)據(jù)的個(gè)數(shù)不能大于結(jié)構(gòu)體中元素的個(gè)數(shù)。 在定義結(jié)構(gòu)體類型的變量時(shí),也可以指定變量的存儲(chǔ)類型。 4.4 (2) 在定義結(jié)構(gòu)體類型的同時(shí)定義結(jié)構(gòu)體變量。 (3) 在定義結(jié)構(gòu)體時(shí),省略結(jié)構(gòu)名,而直接定義變量。 對(duì)于結(jié)構(gòu)體類型的變量,在編譯過(guò)程中,編譯系統(tǒng)將為這些變量分配相應(yīng)的內(nèi)存空間,所分配的空間大小原則上為結(jié)構(gòu)體中所有成員所占
55、空間的總和。 結(jié)構(gòu)體變量也存在作用域的問(wèn)題,其作用域與一般變量的作用域相同。 4.4 對(duì)結(jié)構(gòu)體變量的使用一般是通過(guò)對(duì)其成員的引用實(shí)現(xiàn)的。使用結(jié)構(gòu)體變量的成員的一般格式為: . 其中,“是結(jié)構(gòu)體成員運(yùn)算符,它在所有運(yùn)算符中優(yōu)先級(jí)最高。4.4 結(jié)構(gòu)體類型變量本身也可參與一些運(yùn)算: 1) 同類型的結(jié)構(gòu)體變量可以相互賦值。 2) 結(jié)構(gòu)體類型變量不能直接進(jìn)行輸入輸出。 3) 結(jié)構(gòu)體類型變量可以作為函數(shù)的參數(shù),函數(shù)的返回值也可以是結(jié)構(gòu)體類型。4.4 定義結(jié)構(gòu)體數(shù)組的方法與定義結(jié)構(gòu)體類型變量的方法類同,只是在定義時(shí)增加維數(shù)的說(shuō)明,也有三種方法。 在說(shuō)明結(jié)構(gòu)體數(shù)組時(shí),可對(duì)它進(jìn)行初始化,其方法與數(shù)組類似,有兩種
56、方法:第一種方法是將數(shù)組的每一個(gè)元素的成員的值用花括號(hào)括起來(lái),再將數(shù)組的全部元素值用一對(duì)花括號(hào)括起來(lái);第二種方法是在花括號(hào)內(nèi)依次列出各個(gè)元素的成員值。4.44.5 枚舉類型 定義枚舉類型通常采用如下形式: enum , , ; 一個(gè)枚舉類型中可有若干個(gè)枚舉常量,構(gòu)成枚舉量表,各枚舉常量可為任意合法的標(biāo)識(shí)符,它們之間用逗號(hào)隔開(kāi)。枚舉常量也稱為枚舉元素。 編譯系統(tǒng)給每個(gè)枚舉元素指定一個(gè)整型常量值。如果在枚舉類型定義中沒(méi)有規(guī)定元素所取的整數(shù)值,系統(tǒng)把所列舉的枚舉元素的序號(hào)(從0開(kāi)始)作為對(duì)應(yīng)元素的值。也可以指定枚舉元素的值 枚舉元素可以作為整型常量使用,可以直接輸出。 可以用枚舉類型說(shuō)明枚舉類型變量
57、,而且也有與結(jié)構(gòu)體類型類似的三種說(shuō)明方法。 在說(shuō)明枚舉類型變量時(shí),也可對(duì)它進(jìn)行初始化,此時(shí)可將某一個(gè)枚舉元素作為它的初始值。 通常將某個(gè)枚舉元素賦給枚舉類型的變量,但也可將相應(yīng)的整數(shù)賦給枚舉類型的變量,不過(guò)此時(shí)一定要進(jìn)行強(qiáng)制類型轉(zhuǎn)換。反過(guò)來(lái),也可以將枚舉變量強(qiáng)制轉(zhuǎn)換為整型值。 4.5 對(duì)枚舉類型變量可以使用兩種運(yùn)算符:賦值運(yùn)算符和關(guān)系運(yùn)算符。 可以將一個(gè)枚舉類型中的枚舉元素賦給相應(yīng)的枚舉變量,同類型的枚舉變量之間也可以相互賦值。 枚舉類型變量的關(guān)系運(yùn)算是指同類型的枚舉類型變量之間的比較運(yùn)算,或枚舉類型變量與一個(gè)枚舉元素進(jìn)行的比較運(yùn)算。 枚舉變量不能直接從鍵盤(pán)上輸入,但可以直接輸出。4.54.6
58、 引用類型 引用是另一個(gè)變量別名,或另一個(gè)變量的同義詞,引用變量依附于另一個(gè)變量而定義。定義引用類型變量的一般格式為: &=; 其中為引用類型的變量,而必須是已經(jīng)定義過(guò)的且與引變量同類型的變量。 在定義一個(gè)引用變量時(shí),編譯系統(tǒng)并不會(huì)為其單獨(dú)分配存儲(chǔ)空間,因此必須對(duì)它進(jìn)行初始化,將它與某個(gè)已定義的同類型的變量相關(guān)聯(lián)。 對(duì)枚舉類型變量可以使用兩種運(yùn)算符:賦值運(yùn)算符和關(guān)系運(yùn)算符。 可以將一個(gè)枚舉類型中的枚舉元素賦給相應(yīng)的枚舉變量,同類型的枚舉變量之間也可以相互賦值。 枚舉類型變量的關(guān)系運(yùn)算是指同類型的枚舉類型變量之間的比較運(yùn)算,或枚舉類型變量與一個(gè)枚舉元素進(jìn)行的比較運(yùn)算。 枚舉變量不能直接從鍵盤(pán)上輸
59、入,但可以直接輸出。4.6 要注意如下幾個(gè)問(wèn)題: (1) 在定義引用類型的變量時(shí),不能用不同類型的變量或常量對(duì)它初始化。 (2) 引用可以與指針變量所指向的數(shù)據(jù)相關(guān)聯(lián),也可以與數(shù)組中的元素相關(guān)聯(lián)。 (3) 可以定義指針類型的引用。 (4) 可以定義對(duì)引用類型變量的引用,但不能定義引用的引用,也不能定義引用指針和引用數(shù)組。 (5) 但沒(méi)有空引用和void類型的引用。 (6) 可以為引用變量動(dòng)態(tài)分配內(nèi)存空間。 4.6C+實(shí)用教程第五章 類和對(duì)象第 5 章 類和對(duì)象5.1 對(duì)象5.4 函數(shù)重載5.3 成員函數(shù)5.2 類的定義和使用5.5 函數(shù)的嵌套與遞歸5.6 構(gòu)造函數(shù)與析構(gòu)函數(shù)5.7 作用域與存儲(chǔ)
60、類型5.8 友元函數(shù)5.1 對(duì)象 從廣義上講,人們所關(guān)心的事物都是對(duì)象,它是信息系統(tǒng)所針對(duì)的問(wèn)題域中的人、地點(diǎn)和事物等概念的抽象。 面向?qū)ο蠓椒▽W(xué)將對(duì)象定義為:對(duì)象是一個(gè)邏輯實(shí)體,它是對(duì)一組信息以及作用于這些信息的操作的描述。也就是說(shuō),對(duì)象是將其自身所固有的狀態(tài)特征或?qū)傩耘c可以對(duì)這些狀態(tài)施加的操作結(jié)合在一起所構(gòu)成的獨(dú)立實(shí)體。 對(duì)象的特性: (1)有一個(gè)名字作為該對(duì)象在系統(tǒng)中的標(biāo)識(shí) (2)有一組描述它的特征的狀態(tài)。 (3)有一組操作。 根據(jù)開(kāi)發(fā)過(guò)程的不同,可將對(duì)象分為三種不同類型的對(duì)象: 現(xiàn)實(shí)生活中存在的實(shí)體:是我們所模擬系統(tǒng)的原始構(gòu)成; 問(wèn)題對(duì)象:對(duì)象在問(wèn)題中的抽象,它是現(xiàn)實(shí)對(duì)象在計(jì)算機(jī)解空間
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年面板檢測(cè)系統(tǒng)項(xiàng)目建議書(shū)
- 辦公新環(huán)境啟用儀式講話稿
- 酒店投資開(kāi)發(fā)建設(shè)合同
- 2025年硅粉系列項(xiàng)目合作計(jì)劃書(shū)
- 商鋪轉(zhuǎn)讓合同協(xié)議
- 關(guān)于辦公室日常行政工作的推進(jìn)情況
- 國(guó)際運(yùn)輸服務(wù)提供商合作框架協(xié)議
- 紅星照耀中國(guó)的革命情懷解讀
- L-Tyrosinamide-生命科學(xué)試劑-MCE
- 辦公事務(wù)處理規(guī)范與流程文書(shū)
- 2024年防盜門銷售合同范本
- 支付令申請(qǐng)書(shū)(2025版)
- 綜采工作面過(guò)空巷安全技術(shù)措施
- 麻醉護(hù)士的 工作職責(zé)
- 2025年中考語(yǔ)文一輪復(fù)習(xí):九年級(jí)下冊(cè)知識(shí)點(diǎn)梳理
- 云南省麗江市2025屆高三上學(xué)期復(fù)習(xí)統(tǒng)一檢測(cè)試題 物理 含解析
- 旅游健康與保健知識(shí)
- 亞朵酒店前臺(tái)述職報(bào)告
- 建材材料合作合同范例
- 2025年集體經(jīng)濟(jì)發(fā)展計(jì)劃
- 數(shù)據(jù)安全重要數(shù)據(jù)風(fēng)險(xiǎn)評(píng)估報(bào)告
評(píng)論
0/150
提交評(píng)論