




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
C++數(shù)組與字符串深圳市信息職業(yè)技術(shù)學(xué)院數(shù)組01目
錄小標(biāo)題通過本節(jié)學(xué)習(xí)可以:一、掌握數(shù)組的聲明與賦值方式二、掌握數(shù)組的常用操作01數(shù)組數(shù)組在實(shí)際情況中,我們會(huì)把相同的實(shí)物歸結(jié)到一類。在C++的世界也是一樣,我們也要把相同的數(shù)據(jù)類型歸結(jié)到一組,這就是我們?cè)谶@一任務(wù)中將要講到的數(shù)組概念。將相同的數(shù)據(jù)歸到一組。在前面我們已經(jīng)學(xué)習(xí)了整型、字符型和浮點(diǎn)型等簡(jiǎn)單數(shù)據(jù)類型,就有整型數(shù)組、實(shí)數(shù)數(shù)組、字符數(shù)組等。注意:這里我們強(qiáng)調(diào)一下C++中的數(shù)組和我們模塊二中學(xué)習(xí)的JavaScript數(shù)組是不同的,一個(gè)C++的數(shù)組中的所有元素必須是相同的數(shù)據(jù)類型,而JavaScript數(shù)組數(shù)據(jù)類型可以混合。C++數(shù)組是包含若千個(gè)同一類型的變量的集合,在程序中這些變量具有相同的名字,但是具有不同的下標(biāo),類似array[0]、array[1]、array[2]、array[3]、array[4]...這種形式。在實(shí)際應(yīng)用中,使用數(shù)組可以大大縮短并簡(jiǎn)化程序,結(jié)合循環(huán)可以高效處理許多題。下面將介紹數(shù)組的定義、數(shù)組中元素的存取和數(shù)組的初始化。假如現(xiàn)在要求你整理全班同學(xué)的C++的成績(jī),你希望寫個(gè)程序。全班共有60名學(xué)生,所以必須用60個(gè)變量來存儲(chǔ)每一個(gè)學(xué)生的成績(jī)?,F(xiàn)在問題來了,根據(jù)之前學(xué)過的內(nèi)容,難道必須定義60個(gè)不同名稱的變量來存儲(chǔ)學(xué)生的成績(jī)嗎?當(dāng)然不會(huì)這么麻煩,C++專門提供了“數(shù)組”讓您可以定義一個(gè)以“索引”作為識(shí)別的數(shù)據(jù)類型,C++中提供的數(shù)組類型可以用來處理大批量數(shù)據(jù)的問題。數(shù)組是一個(gè)具有單一數(shù)據(jù)類型對(duì)象的集合。數(shù)組中的每一個(gè)數(shù)據(jù)都是數(shù)組中的一個(gè)元素,而且每一個(gè)元素都屬于同一個(gè)數(shù)據(jù)類型。聲明數(shù)組在C++中要聲明一個(gè)數(shù)組,需要指定元素的類型和元素的數(shù)量,格式如下:這叫做一維數(shù)組。arraySize必須是一個(gè)大于零的整數(shù)常量,type可以是任意有效的C++數(shù)據(jù)類型。例如,要聲明一個(gè)類型為double的包含10個(gè)元素的數(shù)組balance,聲明語(yǔ)句如下:現(xiàn)在balance是一個(gè)可用的數(shù)組,可以容納10個(gè)類型為double的數(shù)字。初始化數(shù)組在C++中,您可以逐個(gè)初始化數(shù)組,也可以使用一個(gè)初始化語(yǔ)句,如下所示:大括號(hào){}之間的值的數(shù)目不能大于我們?cè)跀?shù)組聲明時(shí)在方括號(hào)[]中指定的元素?cái)?shù)目。如果您省略掉了數(shù)組的大小,數(shù)組的大小則為初始化時(shí)元素的個(gè)數(shù)。因此,如果代碼如下:您將創(chuàng)建一個(gè)數(shù)組,它與前一個(gè)實(shí)例中所創(chuàng)建的數(shù)組是完全相同的。下面是一個(gè)為數(shù)組中某個(gè)元素賦值的實(shí)例:上述的語(yǔ)句把數(shù)組中第五個(gè)元素的值賦為50.0。所有的數(shù)組都是以0作為它們第一個(gè)元素的索引,也被稱為基索引,數(shù)組的最后一個(gè)索引是數(shù)組的總大小減去1。訪問數(shù)組元素?cái)?shù)組元素可以通過數(shù)組名稱加索引進(jìn)行訪問。元素的索引是放在方括號(hào)內(nèi),跟在數(shù)組名稱的后邊。下面的實(shí)例使用了上述的三個(gè)概念,即,聲明數(shù)組、數(shù)組賦值、訪問數(shù)組,代碼如下:多維數(shù)據(jù)我們之前介紹的都是一維數(shù)組的聲明和賦值方式,下面我們來研究一下多維數(shù)組,也就是二維,三維數(shù)組或更多維度。一維數(shù)組只有一個(gè)下標(biāo)。但是在應(yīng)用中我們有可能用到大于一維的數(shù)組,例如存儲(chǔ)4個(gè)學(xué)生的5門課的成績(jī),此時(shí)數(shù)據(jù)需要按照行和列來排列。第1行是第1個(gè)學(xué)生的5門課的成績(jī),第2行是第2個(gè)學(xué)生的5門課的成績(jī),依此類推:顯然第1列的數(shù)據(jù)應(yīng)該是4個(gè)學(xué)生各自的第1門課的成績(jī),第2列的數(shù)據(jù)應(yīng)該是4個(gè)學(xué)生各自的第2門課的成績(jī),依此類推。使用二維數(shù)組可以很好地處理類似的問題二維數(shù)組就是含有兩個(gè)下標(biāo)的數(shù)組,第1個(gè)下標(biāo)代表行下標(biāo),第2個(gè)下標(biāo)代表列下標(biāo)。聲明格式如下:多維數(shù)據(jù)其中,type可以是任意有效的C++數(shù)據(jù)類型,arrayName是一個(gè)有效的C++標(biāo)識(shí)符。一個(gè)二維數(shù)組可以被認(rèn)為是一個(gè)帶有x行和y列的表格。下面是一個(gè)二維數(shù)組,包含3行和4列,如圖因此,數(shù)組中的每個(gè)元素是使用形式為a[i,j]的元素名稱來標(biāo)識(shí)的,其中a是數(shù)組名稱,i和j是唯一標(biāo)識(shí)a中每個(gè)元素的下標(biāo)。如何初始化二維數(shù)組呢?多維數(shù)據(jù)多維數(shù)組可以通過在括號(hào)內(nèi)為每行指定值來進(jìn)行初始化。下面是一個(gè)帶有3行4列的數(shù)組。代碼如下:二維數(shù)組中的元素是通過使用下標(biāo)(即數(shù)組的行索引和列索引)來訪問的。如下代碼:內(nèi)部嵌套的括號(hào)是可選的,下面的初始化與上面是等同的,代碼如下:多維數(shù)據(jù)上面的語(yǔ)句將獲取數(shù)組中第3行第4個(gè)元素。您可以通過上面4-43的示意圖來進(jìn)行驗(yàn)證。讓我們來看看下面的程序,我們將使用嵌套循環(huán)來處理二維數(shù)組,代碼如下:多維數(shù)據(jù)以上是二維數(shù)組,如果維數(shù)更多呢,比如三維,我們可以將一維數(shù)組看作是線性的,二維數(shù)組是平面的,三維或三維以上的數(shù)組處理起來就比較復(fù)雜了,既非線性也非平面。例如:inta[2][3][4];就是一個(gè)三維的聲明格式。定義了一個(gè)名為a的三維數(shù)組,該數(shù)組中共有2×3×4個(gè)元素。我們也可以把該三維數(shù)組a看作是一個(gè)特殊的數(shù)組,即a是一個(gè)含有兩個(gè)元素的一維數(shù)組,只不過每一個(gè)元素又是一個(gè)含有3×4個(gè)元素的二維數(shù)組。再舉個(gè)形象的例子,可以把三維數(shù)組a看作包含兩張表,每張表中包含3行4列共12個(gè)元素,a中一共包含24個(gè)元素。顯然,隨著數(shù)組維數(shù)的增加,數(shù)組中元素的個(gè)數(shù)呈幾何級(jí)數(shù)增長(zhǎng),這會(huì)受到內(nèi)存容量的限制,使用起來比較復(fù)雜,所以一般三維以上的數(shù)組就很少使用了。指向數(shù)組的指針在學(xué)習(xí)本小節(jié)前,我們要先了解一個(gè)概念,什么是指針?學(xué)習(xí)C++的指針既簡(jiǎn)單又有趣。通過指針,可以簡(jiǎn)化一些C++編程任務(wù)的執(zhí)行,還有一些任務(wù),如動(dòng)態(tài)內(nèi)存分配,沒有指針是無(wú)法執(zhí)行的。所以,想要成為一名優(yōu)秀的C++程序員,學(xué)習(xí)指針是很有必要的。正如您所知道的,每一個(gè)變量都有一個(gè)內(nèi)存位置,每一個(gè)內(nèi)存位置都定義了可使用連字號(hào)(&)運(yùn)算符訪問的地址,它表示了在內(nèi)存中的一個(gè)地址。請(qǐng)看下面的實(shí)例,它將輸出定義的變量地址,代碼如下:指向數(shù)組的指針通過上面的實(shí)例,我們了解了什么是內(nèi)存地址以及如何訪問它。接下來讓我們看看什么是指針。指針是一個(gè)變量,其值為另一個(gè)變量的地址,即,內(nèi)存位置的直接地址。就像其他變量或常量一樣,您必須在使用指針存儲(chǔ)其他變量地址之前,對(duì)其進(jìn)行聲明。指針變量聲明的一般形式為:type*var-name;在這里,type是指針的基類型,它必須是一個(gè)有效的C++數(shù)據(jù)類型,var-name是指針變量的名稱。用來聲明指針的星號(hào)*與乘法中使用的星號(hào)是相同的。但是,在這個(gè)語(yǔ)句中,星號(hào)是用來指定一個(gè)變量是指針。以下是有效的指針聲明,代碼如下:指向數(shù)組的指針?biāo)兄羔樀闹档膶?shí)際數(shù)據(jù)類型,不管是整型、浮點(diǎn)型、字符型,還是其他的數(shù)據(jù)類型,都是一樣的,都是一個(gè)代表內(nèi)存地址的長(zhǎng)的十六進(jìn)制數(shù)。不同數(shù)據(jù)類型的指針之間唯一的不同是,指針?biāo)赶虻淖兞炕虺A康臄?shù)據(jù)類型不同。使用指針時(shí)會(huì)頻繁進(jìn)行以下幾個(gè)操作:定義一個(gè)指針變量、把變量地址賦值給指針、訪問指針變量中可用地址的值。這些是通過使用一元運(yùn)算符*來返回位于操作數(shù)所指定地址的變量的值。了解了這些基本概念后我們?cè)賮碇v解數(shù)組指針。數(shù)組名是指向數(shù)組中第一個(gè)元素的常量指針。因此,在下面的聲明中:runoobAarray是一個(gè)指向&runoobAarray[0]的指針,即數(shù)組runoobAarray的第一個(gè)元素的地址。因此,下面的程序片段把p賦值為runoobAarray的第一個(gè)元素的地址:指向數(shù)組的指針使用數(shù)組名作為常量指針是合法的,反之亦然。因此,*(runoobAarray+4)是一種訪問runoobAarray[4]數(shù)據(jù)的合法方式。一旦您把第一個(gè)元素的地址存儲(chǔ)在p中,您就可以使用*p、*(p+1)、*(p+2)等來訪問數(shù)組元素。下面的實(shí)例演示了上面討論到的這些概念,代碼如下:指向數(shù)組的指針在上面的實(shí)例中,p是一個(gè)指向double型的指針,這意味著它可以存儲(chǔ)一個(gè)double類型的變量。一旦我們有了p中的地址,*p將給出存儲(chǔ)在p中相應(yīng)地址的值,正如上面實(shí)例中所演示的。傳遞數(shù)組給函數(shù)C++中您可以通過指定不帶索引的數(shù)組名來傳遞一個(gè)指向數(shù)組的指針。C++傳數(shù)組給一個(gè)函數(shù),數(shù)組類型自動(dòng)轉(zhuǎn)換為指針類型,因而傳的實(shí)際是地址。如果您想要在函數(shù)中傳遞一個(gè)一維數(shù)組作為參數(shù),您必須以下面三種方式來聲明函數(shù)形式參數(shù),這三種聲明方式的結(jié)果是一樣的,因?yàn)槊糠N方式都會(huì)告訴編譯器將要接收一個(gè)整型指針。同樣地,您也可以傳遞一個(gè)多維數(shù)組作為形式參數(shù)。方式一,形式參數(shù)是一個(gè)指針:傳遞數(shù)組給函數(shù)方式二,形式參數(shù)是一個(gè)已定義大小的數(shù)組:方式三,形式參數(shù)是一個(gè)未定義大小的數(shù)組:傳遞數(shù)組
溫馨提示
- 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 醫(yī)療設(shè)備雜質(zhì)清理方案(3篇)
- 篷帆結(jié)構(gòu)仿真與有限元優(yōu)化
- 河南省平頂山市2024-2025學(xué)年七年級(jí)下學(xué)期期末考試歷史試卷(含答案)
- 餐飲廚具倒閉處理方案(3篇)
- 人防消防方案么(3篇)
- 駐地部隊(duì)設(shè)施改造方案(3篇)
- 蔬菜攤位規(guī)劃方案(3篇)
- 咖啡擺攤經(jīng)營(yíng)方案(3篇)
- 電力安裝技術(shù)方案(3篇)
- 裝修公司資金管理方案(3篇)
- 建筑材料招標(biāo)文件2篇
- 電子工廠品質(zhì)意識(shí)培訓(xùn)
- 2025年初中語(yǔ)文教師招聘面試八年級(jí)上冊(cè)逐字稿之蘇州園林八上
- 《中國(guó)慢性便秘臨床診斷與治療規(guī)范(2024)》解讀
- 水果聯(lián)營(yíng)合同協(xié)議
- 2024智能船舶規(guī)范
- 資料員筆試試題及答案
- 幼兒園晨間活動(dòng)教研培訓(xùn)
- 2025農(nóng)村土地墓地買賣合同
- 建筑施工現(xiàn)場(chǎng)消防安全培訓(xùn)課件
- 中小企業(yè)數(shù)字化轉(zhuǎn)型路徑分析
評(píng)論
0/150
提交評(píng)論