版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
C++數(shù)組與字符串深圳市信息職業(yè)技術學院數(shù)組01目
錄小標題通過本節(jié)學習可以:一、掌握數(shù)組的聲明與賦值方式二、掌握數(shù)組的常用操作01數(shù)組數(shù)組在實際情況中,我們會把相同的實物歸結到一類。在C++的世界也是一樣,我們也要把相同的數(shù)據(jù)類型歸結到一組,這就是我們在這一任務中將要講到的數(shù)組概念。將相同的數(shù)據(jù)歸到一組。在前面我們已經(jīng)學習了整型、字符型和浮點型等簡單數(shù)據(jù)類型,就有整型數(shù)組、實數(shù)數(shù)組、字符數(shù)組等。注意:這里我們強調(diào)一下C++中的數(shù)組和我們模塊二中學習的JavaScript數(shù)組是不同的,一個C++的數(shù)組中的所有元素必須是相同的數(shù)據(jù)類型,而JavaScript數(shù)組數(shù)據(jù)類型可以混合。C++數(shù)組是包含若千個同一類型的變量的集合,在程序中這些變量具有相同的名字,但是具有不同的下標,類似array[0]、array[1]、array[2]、array[3]、array[4]...這種形式。在實際應用中,使用數(shù)組可以大大縮短并簡化程序,結合循環(huán)可以高效處理許多題。下面將介紹數(shù)組的定義、數(shù)組中元素的存取和數(shù)組的初始化。假如現(xiàn)在要求你整理全班同學的C++的成績,你希望寫個程序。全班共有60名學生,所以必須用60個變量來存儲每一個學生的成績。現(xiàn)在問題來了,根據(jù)之前學過的內(nèi)容,難道必須定義60個不同名稱的變量來存儲學生的成績嗎?當然不會這么麻煩,C++專門提供了“數(shù)組”讓您可以定義一個以“索引”作為識別的數(shù)據(jù)類型,C++中提供的數(shù)組類型可以用來處理大批量數(shù)據(jù)的問題。數(shù)組是一個具有單一數(shù)據(jù)類型對象的集合。數(shù)組中的每一個數(shù)據(jù)都是數(shù)組中的一個元素,而且每一個元素都屬于同一個數(shù)據(jù)類型。聲明數(shù)組在C++中要聲明一個數(shù)組,需要指定元素的類型和元素的數(shù)量,格式如下:這叫做一維數(shù)組。arraySize必須是一個大于零的整數(shù)常量,type可以是任意有效的C++數(shù)據(jù)類型。例如,要聲明一個類型為double的包含10個元素的數(shù)組balance,聲明語句如下:現(xiàn)在balance是一個可用的數(shù)組,可以容納10個類型為double的數(shù)字。初始化數(shù)組在C++中,您可以逐個初始化數(shù)組,也可以使用一個初始化語句,如下所示:大括號{}之間的值的數(shù)目不能大于我們在數(shù)組聲明時在方括號[]中指定的元素數(shù)目。如果您省略掉了數(shù)組的大小,數(shù)組的大小則為初始化時元素的個數(shù)。因此,如果代碼如下:您將創(chuàng)建一個數(shù)組,它與前一個實例中所創(chuàng)建的數(shù)組是完全相同的。下面是一個為數(shù)組中某個元素賦值的實例:上述的語句把數(shù)組中第五個元素的值賦為50.0。所有的數(shù)組都是以0作為它們第一個元素的索引,也被稱為基索引,數(shù)組的最后一個索引是數(shù)組的總大小減去1。訪問數(shù)組元素數(shù)組元素可以通過數(shù)組名稱加索引進行訪問。元素的索引是放在方括號內(nèi),跟在數(shù)組名稱的后邊。下面的實例使用了上述的三個概念,即,聲明數(shù)組、數(shù)組賦值、訪問數(shù)組,代碼如下:多維數(shù)據(jù)我們之前介紹的都是一維數(shù)組的聲明和賦值方式,下面我們來研究一下多維數(shù)組,也就是二維,三維數(shù)組或更多維度。一維數(shù)組只有一個下標。但是在應用中我們有可能用到大于一維的數(shù)組,例如存儲4個學生的5門課的成績,此時數(shù)據(jù)需要按照行和列來排列。第1行是第1個學生的5門課的成績,第2行是第2個學生的5門課的成績,依此類推:顯然第1列的數(shù)據(jù)應該是4個學生各自的第1門課的成績,第2列的數(shù)據(jù)應該是4個學生各自的第2門課的成績,依此類推。使用二維數(shù)組可以很好地處理類似的問題二維數(shù)組就是含有兩個下標的數(shù)組,第1個下標代表行下標,第2個下標代表列下標。聲明格式如下:多維數(shù)據(jù)其中,type可以是任意有效的C++數(shù)據(jù)類型,arrayName是一個有效的C++標識符。一個二維數(shù)組可以被認為是一個帶有x行和y列的表格。下面是一個二維數(shù)組,包含3行和4列,如圖因此,數(shù)組中的每個元素是使用形式為a[i,j]的元素名稱來標識的,其中a是數(shù)組名稱,i和j是唯一標識a中每個元素的下標。如何初始化二維數(shù)組呢?多維數(shù)據(jù)多維數(shù)組可以通過在括號內(nèi)為每行指定值來進行初始化。下面是一個帶有3行4列的數(shù)組。代碼如下:二維數(shù)組中的元素是通過使用下標(即數(shù)組的行索引和列索引)來訪問的。如下代碼:內(nèi)部嵌套的括號是可選的,下面的初始化與上面是等同的,代碼如下:多維數(shù)據(jù)上面的語句將獲取數(shù)組中第3行第4個元素。您可以通過上面4-43的示意圖來進行驗證。讓我們來看看下面的程序,我們將使用嵌套循環(huán)來處理二維數(shù)組,代碼如下:多維數(shù)據(jù)以上是二維數(shù)組,如果維數(shù)更多呢,比如三維,我們可以將一維數(shù)組看作是線性的,二維數(shù)組是平面的,三維或三維以上的數(shù)組處理起來就比較復雜了,既非線性也非平面。例如:inta[2][3][4];就是一個三維的聲明格式。定義了一個名為a的三維數(shù)組,該數(shù)組中共有2×3×4個元素。我們也可以把該三維數(shù)組a看作是一個特殊的數(shù)組,即a是一個含有兩個元素的一維數(shù)組,只不過每一個元素又是一個含有3×4個元素的二維數(shù)組。再舉個形象的例子,可以把三維數(shù)組a看作包含兩張表,每張表中包含3行4列共12個元素,a中一共包含24個元素。顯然,隨著數(shù)組維數(shù)的增加,數(shù)組中元素的個數(shù)呈幾何級數(shù)增長,這會受到內(nèi)存容量的限制,使用起來比較復雜,所以一般三維以上的數(shù)組就很少使用了。指向數(shù)組的指針在學習本小節(jié)前,我們要先了解一個概念,什么是指針?學習C++的指針既簡單又有趣。通過指針,可以簡化一些C++編程任務的執(zhí)行,還有一些任務,如動態(tài)內(nèi)存分配,沒有指針是無法執(zhí)行的。所以,想要成為一名優(yōu)秀的C++程序員,學習指針是很有必要的。正如您所知道的,每一個變量都有一個內(nèi)存位置,每一個內(nèi)存位置都定義了可使用連字號(&)運算符訪問的地址,它表示了在內(nèi)存中的一個地址。請看下面的實例,它將輸出定義的變量地址,代碼如下:指向數(shù)組的指針通過上面的實例,我們了解了什么是內(nèi)存地址以及如何訪問它。接下來讓我們看看什么是指針。指針是一個變量,其值為另一個變量的地址,即,內(nèi)存位置的直接地址。就像其他變量或常量一樣,您必須在使用指針存儲其他變量地址之前,對其進行聲明。指針變量聲明的一般形式為:type*var-name;在這里,type是指針的基類型,它必須是一個有效的C++數(shù)據(jù)類型,var-name是指針變量的名稱。用來聲明指針的星號*與乘法中使用的星號是相同的。但是,在這個語句中,星號是用來指定一個變量是指針。以下是有效的指針聲明,代碼如下:指向數(shù)組的指針所有指針的值的實際數(shù)據(jù)類型,不管是整型、浮點型、字符型,還是其他的數(shù)據(jù)類型,都是一樣的,都是一個代表內(nèi)存地址的長的十六進制數(shù)。不同數(shù)據(jù)類型的指針之間唯一的不同是,指針所指向的變量或常量的數(shù)據(jù)類型不同。使用指針時會頻繁進行以下幾個操作:定義一個指針變量、把變量地址賦值給指針、訪問指針變量中可用地址的值。這些是通過使用一元運算符*來返回位于操作數(shù)所指定地址的變量的值。了解了這些基本概念后我們再來講解數(shù)組指針。數(shù)組名是指向數(shù)組中第一個元素的常量指針。因此,在下面的聲明中:runoobAarray是一個指向&runoobAarray[0]的指針,即數(shù)組runoobAarray的第一個元素的地址。因此,下面的程序片段把p賦值為runoobAarray的第一個元素的地址:指向數(shù)組的指針使用數(shù)組名作為常量指針是合法的,反之亦然。因此,*(runoobAarray+4)是一種訪問runoobAarray[4]數(shù)據(jù)的合法方式。一旦您把第一個元素的地址存儲在p中,您就可以使用*p、*(p+1)、*(p+2)等來訪問數(shù)組元素。下面的實例演示了上面討論到的這些概念,代碼如下:指向數(shù)組的指針在上面的實例中,p是一個指向double型的指針,這意味著它可以存儲一個double類型的變量。一旦我們有了p中的地址,*p將給出存儲在p中相應地址的值,正如上面實例中所演示的。傳遞數(shù)組給函數(shù)C++中您可以通過指定不帶索引的數(shù)組名來傳遞一個指向數(shù)組的指針。C++傳數(shù)組給一個函數(shù),數(shù)組類型自動轉(zhuǎn)換為指針類型,因而傳的實際是地址。如果您想要在函數(shù)中傳遞一個一維數(shù)組作為參數(shù),您必須以下面三種方式來聲明函數(shù)形式參數(shù),這三種聲明方式的結果是一樣的,因為每種方式都會告訴編譯器將要接收一個整型指針。同樣地,您也可以傳遞一個多維數(shù)組作為形式參數(shù)。方式一,形式參數(shù)是一個指針:傳遞數(shù)組給函數(shù)方式二,形式參數(shù)是一個已定義大小的數(shù)組:方式三,形式參數(shù)是一個未定義大小的數(shù)組:傳遞數(shù)組
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 焊管機組操作工崗前崗位晉升考核試卷含答案
- 小型家用電器制造工達標知識考核試卷含答案
- 羽絨加工及制品充填工安全管理水平考核試卷含答案
- 鐵合金成品工崗前任職考核試卷含答案
- 過程控制系統(tǒng)點檢員崗前實操知識技能考核試卷含答案
- 樁工機械裝配調(diào)試工崗后考核試卷含答案
- 咖啡師崗前流程考核試卷含答案
- 毛皮及毛皮制品加工工安全意識知識考核試卷含答案
- 2024年湖北省紡織職工大學輔導員考試筆試真題匯編附答案
- 掛面制作工沖突管理強化考核試卷含答案
- 河南豫能控股股份有限公司及所管企業(yè)2026屆校園招聘127人筆試模擬試題及答案解析
- 未來五年養(yǎng)殖淡水鳙魚(胖頭魚)企業(yè)縣域市場拓展與下沉戰(zhàn)略分析研究報告
- 2026年寧夏賀蘭工業(yè)園區(qū)管委會工作人員社會化公開招聘備考題庫參考答案詳解
- 癌痛患者心理支持策略
- 2025年12月份四川成都市第八人民醫(yī)院編外招聘9人筆試參考題庫及答案解析
- 25秋二上語文期末押題卷5套
- 微生物檢驗質(zhì)控措施分析
- 達人分銷合同范本
- 檢修車間定置管理制度(3篇)
- 乘用車內(nèi)部凸出物法規(guī)培訓
- 婦科腫瘤保留生育功能治療策略
評論
0/150
提交評論