第4章數(shù)組和字符串_第1頁
第4章數(shù)組和字符串_第2頁
第4章數(shù)組和字符串_第3頁
第4章數(shù)組和字符串_第4頁
第4章數(shù)組和字符串_第5頁
已閱讀5頁,還剩14頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、 到目前為止,我們已經(jīng)了解C+中所有重要的基本數(shù)據(jù)類型,以及如何在程序中執(zhí)行計(jì)算和判斷。本章將討論兩個(gè)比較復(fù)雜的數(shù)據(jù)類型:數(shù)組和字符串。數(shù)組及其使用方法l 各種類型的數(shù)據(jù)l 多維數(shù)據(jù)的使用l C+字符串與C語符串l C+/CLI的數(shù)組與字符串 在前面介紹了如何聲明和初始化基本類型的變量。每個(gè)變量都可以存儲特定類型的一個(gè)數(shù)據(jù)項(xiàng)在整型變量中可以存放整數(shù),在字符變量中可以字符等。而數(shù)組可以存儲相同類型的多個(gè)數(shù)據(jù)項(xiàng),如整型數(shù)組可以存儲多個(gè)整數(shù)。實(shí)際上,數(shù)組可以存儲任何類型的數(shù)據(jù)。 數(shù)組是由多個(gè)內(nèi)存空間組成,每個(gè)內(nèi)存空間都可以存儲相同類型的一個(gè)數(shù)據(jù)項(xiàng),所有的數(shù)據(jù)項(xiàng)都通過相同的變量名來引用。在C+中定義數(shù)

2、組一般形式為: 類型名 數(shù)組名 常量表達(dá)式; 其中,類型名可以是任一種基本數(shù)據(jù)類型。數(shù)組名是用戶定義的數(shù)組標(biāo)識符。方括號中的常量表達(dá)式表示數(shù)據(jù)元素的個(gè)數(shù),也稱為數(shù)組的長度。 為了引用數(shù)組中各個(gè)數(shù)據(jù)項(xiàng),需要使用一個(gè)整數(shù)標(biāo)識各個(gè)數(shù)據(jù)項(xiàng),該整數(shù)通常稱為數(shù)組的索引。數(shù)組的索引表示數(shù)組元素到數(shù)組開始位置的偏移量。第1個(gè)數(shù)組元素的偏移量是0,因此該元素對應(yīng)的索引值就是0,第2個(gè)數(shù)組元素的偏移量是1,它對應(yīng)的索引值就是1,依次類推。 要引用數(shù)組中某元素時(shí),可以在數(shù)組名后面的方括號中放置該元素對應(yīng)的索引值。如要將數(shù)組a中的第4個(gè)元素設(shè)置為12,可以使用下面的語句: a3=12;數(shù)組的內(nèi)存排列如右圖所示。 在定

3、義數(shù)組時(shí)如果沒有為數(shù)組指定初始值,則數(shù)組的各個(gè)存儲單元中會(huì)包含一此無用的亂碼。在定義數(shù)據(jù)時(shí)可以對其進(jìn)行初始化,使其包含程序中馬上能使用的值。對數(shù)組進(jìn)行初始化時(shí),應(yīng)該在大括號中提供各個(gè)數(shù)組元素的初始值。 初始化數(shù)組時(shí),不能指定比數(shù)組元素個(gè)數(shù)還多的初始化值,但可以指定比數(shù)組元素個(gè)數(shù)少的初始化值。沒有提供初始值的數(shù)組元素將被初化為0,這與未提供初始化列表的情況不同。 前面介紹的數(shù)組都只需要一個(gè)索引值來選擇元素,這種數(shù)組稱為一維數(shù)組。也可以聲明需要兩個(gè)或更多索引值才能訪問元素的數(shù)組,這種數(shù)組一般稱為多維數(shù)組。需要兩個(gè)索引值來引用元素的數(shù)組稱為二維數(shù)組,需要三個(gè)索引值的數(shù)組稱為三維數(shù)組,依此類推。 在程

4、序中,為了存儲這類數(shù)據(jù),就需要定義二維數(shù)組。二維數(shù)組定義的一般形式為:類型說明符 數(shù)組名常量表達(dá)式1常量表達(dá)式2例如: int a34; 這條語句定義了一個(gè)二維數(shù)組a,第一個(gè)索引值是行號,第二個(gè)索引值是行內(nèi)的編號。對于C+中的二維數(shù)組,可以看作是由一維數(shù)組的嵌套而構(gòu)成的。設(shè)一維數(shù)組的每個(gè)元素都又是一個(gè)數(shù)組,就組成了二維數(shù)組。當(dāng)然,前提是各元素類型必須相同。根據(jù)這樣的分析,一個(gè)二維數(shù)組也可以分解為多個(gè)一維數(shù)組。 為了初始化多維數(shù)組,需要擴(kuò)展原來初始化一維數(shù)組的方法。由于二維數(shù)組是兩個(gè)一維數(shù)組,這樣對二維數(shù)組的實(shí)始化就變成對兩個(gè)一維數(shù)組進(jìn)行實(shí)始化。根據(jù)這種方法,用下面的語句可以定義并實(shí)始化二維數(shù)組

5、: int a34= 80,75,92,69, /第一行61,65,71,75, /第二行59,63,70,68 /第三行 ; 因?yàn)榈谝恍卸际且粋€(gè)一維數(shù)組,所以每行的初始化值都包含在一對大括號中。這3個(gè)初始化列表本身也包含在一對大括號中,因?yàn)槎S數(shù)組是一維數(shù)組的一維數(shù)組??梢詫⑦@個(gè)規(guī)則擴(kuò)展到任意維數(shù)的數(shù)組,每增加一維,就需要添加一對大括號包含初始值。l 排序排序l倒置矩陣 在實(shí)際的應(yīng)用時(shí),經(jīng)常會(huì)需要對數(shù)據(jù)進(jìn)行排序。排序的方法有很多種,常見的包括:冒泡排序法和選擇排序法。 1冒泡排序法冒泡排序法 2選擇排序法選擇排序法 矩陣常用二維數(shù)組來表示。倒置矩陣也就是將一個(gè)二維數(shù)組的行和列元素互換,存儲在

6、另一個(gè)二維數(shù)據(jù)中。 在進(jìn)行矩陣倒置時(shí),只需要注意各元素的行和列的索引值變化:原矩陣中的第1個(gè)元素的坐標(biāo)位置沒有發(fā)生變化;原矩陣第2個(gè)元素的行號和列號為(0,1),倒置后變?yōu)椋?,0);原矩陣第3個(gè)元素的行號和列號為(0,2),倒置后變?yōu)椋?,0),.。 char類型的數(shù)組可以用于存儲非空(C語言標(biāo)準(zhǔn))的字符串。在C+中,還定義了string類型,該類型比C語言標(biāo)準(zhǔn)的字符串更易于使用。 char類型的數(shù)組有兩個(gè)含義:它可以是一個(gè)字符數(shù)組,每個(gè)元素存儲一個(gè)字符;它也可以表示一個(gè)字符串。在后一種情況中,字符串中的每個(gè)字符存儲在一個(gè)數(shù)組元素中,字符串的結(jié)尾用一個(gè)特定的字符0表示結(jié)束。 事實(shí)上,stri

7、ng類型是一個(gè)類定義。由于目前為止還沒介紹過類,所以這里可以理解為類是一種新的數(shù)據(jù)類型,類數(shù)據(jù)類型與基本數(shù)據(jù)類型并沒有區(qū)別。在使有基本數(shù)據(jù)類型時(shí),需要使用該基本類型的變量。同樣,在使用類類型時(shí),也必須使用類的變量,只是類的變量一般稱為對象。string類型在頭文件中定義,所以在使用string對象時(shí)總是要包含這個(gè)頭文件。string類型的名稱也是在std命名空間中定義。1連接字符串連接字符串2訪問字符串中的字符訪問字符串中的字符3訪問子字符串訪問子字符串4比較字符串比較字符串5搜索字符串搜索字符串6修改字符串修改字符串 如果字符串需要包含wchar_t類型的字符,而不是char類型的字符,則可

8、以使用頭文件中定義的wstring類型。wstring類型的對象與string類型的對象相同。例如,下面的語句定義了一人Unicode字符串的對象: std:wstring wphrase; Unicode字符串值需要在雙引號前添加一個(gè)前綴L,將寬字符集與單字符集表示的字符串區(qū)分開來。因此,為wstring類型的對象賦值時(shí)應(yīng)采用下面的語句: wphrase=L世上無難事,只怕有心人。; 要輸出Unicode字符串時(shí),必須使用wcout流,并且在輸出中文時(shí),需要設(shè)置系統(tǒng)的使用的字符集為locale (chs)。l CLR數(shù)組l CLR字符串1一維一維CLR數(shù)組數(shù)組 CLR數(shù)組必須使用關(guān)鍵字array指定數(shù)組的類型,還必須在array關(guān)鍵字后面的尖括號中指定數(shù)組元素的類型。2多維多維CLR數(shù)組數(shù)組 CLR多維數(shù)組的最大維數(shù)為32。在聲明多維CLR數(shù)組時(shí),需要在尖括號內(nèi)指定元素的類型后,再指定數(shù)組的維數(shù)。數(shù)組的維數(shù)默認(rèn)為1,因此在聲明一維數(shù)組時(shí)不需要指定維數(shù)。 CLR字符串是由System命名空間中定義的String類表示。String類存儲的字符串中各個(gè)字符是由System:Char類表示。 可以使用類似下面的語句創(chuàng)建表示字符串的String對象: System:String phras

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論