欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C++中的數(shù)組詳情

 更新時(shí)間:2021年11月03日 10:38:52   作者:Coder_LT  
這篇文章主要介紹了C++中的數(shù)組,數(shù)組其實(shí)也是一種數(shù)據(jù)格式,不過(guò)是一種復(fù)合類(lèi)型,它可以存儲(chǔ)多個(gè)同類(lèi)型的值。使用數(shù)組可以將同類(lèi)型的變量整合起來(lái)管理,下面?zhèn)z看看文章的具體舉例內(nèi)容,需要的朋友可以參考一下

1、數(shù)組

數(shù)組其實(shí)也是一種數(shù)據(jù)格式,不過(guò)是一種復(fù)合類(lèi)型,它可以存儲(chǔ)多個(gè)同類(lèi)型的值。

使用數(shù)組可以將同類(lèi)型的變量整合起來(lái)管理,比如說(shuō)我們現(xiàn)在要記錄三個(gè)同學(xué)的考試得分。我們當(dāng)然可以寫(xiě)成int a1, a2, a3;,看起來(lái)也不會(huì)很麻煩。但如果我們有 50 個(gè)同學(xué)呢?如果有 5000 個(gè)同學(xué)呢?顯然就不能通過(guò)這種方式了,何況每個(gè)變量都要起一個(gè)獨(dú)一無(wú)二的名字,這也很麻煩。

使用數(shù)組就不會(huì)有這樣的問(wèn)題,我們只需要規(guī)定數(shù)組的長(zhǎng)度,通過(guò)一個(gè)變量就可以存儲(chǔ)任意多個(gè)值。有 5000 個(gè)同學(xué)就寫(xiě)成int scores[5000] ;就都能存下了。

定義一個(gè)數(shù)組只需要三個(gè)要素:變量類(lèi)型數(shù)組名、數(shù)組長(zhǎng)度即可。

typename arrayName[arraySize];


有一點(diǎn)需要注意,arrayName的類(lèi)型不是數(shù)組,而是typename數(shù)組。也就是說(shuō)數(shù)組也是區(qū)分類(lèi)型的,這也是 C++中的數(shù)組和 Python List 的區(qū)別之一。

2、數(shù)組的使用

2.1 元素訪問(wèn)

對(duì)于一個(gè)數(shù)組來(lái)說(shuō),當(dāng)我們需要訪問(wèn)其中的元素時(shí),可以通過(guò)下標(biāo)的方式來(lái)訪問(wèn)。

在絕大多數(shù)計(jì)算機(jī)程序當(dāng)中,數(shù)組的下標(biāo)通常都是從 0 開(kāi)始的。第一個(gè)數(shù)存在第 0 位,第二個(gè)數(shù)存在第 1 位,以此類(lèi)推。下標(biāo)通過(guò)方括號(hào)表示,

如:

cout << arrayName[0] << endl;

注意:我們傳入的下標(biāo)不能大于等于數(shù)組的長(zhǎng)度(由于是從 0 開(kāi)始的),編譯器往往不會(huì)報(bào)錯(cuò),只會(huì)給出一個(gè)警告,但運(yùn)行的過(guò)程當(dāng)中可能會(huì)引發(fā)各種意想不到的問(wèn)題。因?yàn)楹芸赡苣阍L問(wèn)的內(nèi)存已經(jīng)超過(guò)了程序管理的范圍,訪問(wèn)到了一些操作系統(tǒng)內(nèi)存或者是其他禁止訪問(wèn)的內(nèi)存,引起難以想象的后果。

int a[3];
cout << a[10] << endl;

在上面的例子當(dāng)中,我們聲明了一個(gè)長(zhǎng)度為 3 的數(shù)組,但是訪問(wèn)了下標(biāo) 10。這顯然超出了數(shù)組的范圍,但是當(dāng)我們編譯的時(shí)候編譯器并不會(huì)報(bào)錯(cuò),只會(huì)拋出一個(gè)警告。要知道程序員往往是看不見(jiàn)警告的。

如果一不小心就會(huì)錯(cuò)過(guò)這個(gè)信息,導(dǎo)致潛在的風(fēng)險(xiǎn)。所以在訪問(wèn)之前一定要切記,確保下標(biāo)在數(shù)組的范圍內(nèi)。

2.2 初始化

數(shù)組和其他變量一樣,也可以在聲明的時(shí)候進(jìn)行初始化。

最常見(jiàn)的方式是將它的每一個(gè)元素的值寫(xiě)出來(lái):

int a[3] = {0, 1, 2};

編譯器會(huì)將花括號(hào)當(dāng)中的元素一個(gè)一個(gè)地填到數(shù)組對(duì)應(yīng)的位置當(dāng)中,花括號(hào)當(dāng)中的元素?cái)?shù)量并不一定需要和數(shù)組長(zhǎng)度相等,如果小于數(shù)組長(zhǎng)度,那么就會(huì)初始化對(duì)應(yīng)數(shù)量的元素。

int a[3] = {0, 1};

那么數(shù)組 a 的前兩位會(huì)被初始化成 0 和 1,其他的位置會(huì)被初始化為0。

如果想要將數(shù)組當(dāng)中所有元素都初始化成 0,則比較特殊,我們只需要寫(xiě)一個(gè) 0 即可。

int a[100] = {0};

但只有初始化成 0 的時(shí)候可以這么操作,如果傳入其他值,則不會(huì)生效。

還有一種初始化方式是我們不填數(shù)組的長(zhǎng)度,而通過(guò)初始化的方式讓編譯器替我們?nèi)ニ悖?/strong>

int a[] = {0, 1, 2, 3, 4};

編譯器通過(guò)執(zhí)行初始化知道 a 數(shù)組的長(zhǎng)度為 5,不過(guò) C++ primer 強(qiáng)烈建議我們不用這么干。因?yàn)槲覀內(nèi)斯?shù)出來(lái)的結(jié)果可能和編譯器不一樣(我們會(huì)犯錯(cuò)),增加我們 debug 的難度。

3、C++11 的初始化方式

C++11 當(dāng)中對(duì)于數(shù)組的初始化又有了一些新的定義,首先是可以省略等號(hào):

int a[3] {1, 2, 3};


其次花括號(hào)內(nèi)可以留空,這等價(jià)于將元素全部設(shè)置為 0:

int a[100] = {};
int b[10] {};


列表初始化時(shí)禁止縮窄轉(zhuǎn)化,我們?cè)谏弦黄恼庐?dāng)中講過(guò):

char cs[4] = {0, 0x3f3f3f3f, 'a', 'z'};  // 禁止,因?yàn)?x3f3f3f3f超過(guò)了char范圍

到此這篇關(guān)于C++中的數(shù)組詳情的文章就介紹到這了,更多相關(guān)C++中的數(shù)組內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

注:文章轉(zhuǎn)自微信眾號(hào):Coder梁(ID:Coder_LT)

相關(guān)文章

  • QT生成隨機(jī)驗(yàn)證碼的方法

    QT生成隨機(jī)驗(yàn)證碼的方法

    這篇文章主要為大家詳細(xì)介紹了QT生成隨機(jī)驗(yàn)證碼的方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-06-06
  • while和for可以相互轉(zhuǎn)換的例子分享

    while和for可以相互轉(zhuǎn)換的例子分享

    這篇文章主要介紹了while和for可以相互轉(zhuǎn)換的例子,需要的朋友可以參考下
    2014-02-02
  • C++Zip壓縮解壓縮示例(支持遞歸壓縮)

    C++Zip壓縮解壓縮示例(支持遞歸壓縮)

    C++Zip壓縮解壓縮示例,用第三方函數(shù)封裝而成,支持 UNCODE, ANSCII、支持壓縮文件夾、支持遞歸壓縮
    2013-11-11
  • C++深入刨析優(yōu)先級(jí)隊(duì)列priority_queue的使用

    C++深入刨析優(yōu)先級(jí)隊(duì)列priority_queue的使用

    最近我學(xué)習(xí)了C++中的STL庫(kù)中的優(yōu)先級(jí)隊(duì)列(priority_queue)容器適配器,對(duì)于優(yōu)先級(jí)隊(duì)列,我們不僅要會(huì)使用常用的函數(shù)接口,我們還有明白這些接口在其底層是如何實(shí)現(xiàn)的
    2022-08-08
  • C++中析構(gòu)函數(shù)為何是虛函數(shù)

    C++中析構(gòu)函數(shù)為何是虛函數(shù)

    這篇文章主要介紹了C++中析構(gòu)函數(shù)為何是虛函數(shù)問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • C/C++ 進(jìn)程通訊(命名管道)的實(shí)例

    C/C++ 進(jìn)程通訊(命名管道)的實(shí)例

    下面小編就為大家?guī)?lái)一篇C/C++ 進(jìn)程通訊(命名管道)的實(shí)例。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-08-08
  • C語(yǔ)言深入探索遞歸的特點(diǎn)

    C語(yǔ)言深入探索遞歸的特點(diǎn)

    程序調(diào)???的編程技巧稱(chēng)為遞歸 recursion)函數(shù)??調(diào)???就是遞歸,你也可以理解成是?種嵌套結(jié)構(gòu),但遞歸分為倆部分,第?是“遞”,進(jìn)?嵌套結(jié)構(gòu)。第?是”歸“,最終會(huì)?步?步返回。第?次接觸遞歸都會(huì)很懵,慢慢理解這個(gè)過(guò)程就明?了
    2022-06-06
  • C++17使用std::optional表示可能存在的值

    C++17使用std::optional表示可能存在的值

    本文主要介紹了C++17使用std::optional表示可能存在的值,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-07-07
  • C++ 基數(shù)排序的實(shí)現(xiàn)實(shí)例代碼

    C++ 基數(shù)排序的實(shí)現(xiàn)實(shí)例代碼

    這篇文章主要介紹了C++ 基數(shù)排序的實(shí)現(xiàn)實(shí)例代碼的相關(guān)資料,這里附有實(shí)例代碼,幫助大家學(xué)習(xí)理解,需要的朋友可以參考下
    2016-11-11
  • C++遍歷文件夾獲取文件列表

    C++遍歷文件夾獲取文件列表

    這篇文章主要為大家詳細(xì)介紹了C++遍歷文件夾獲取文件列表的相關(guān)資料,感興趣的小伙伴們可以參考一下
    2016-05-05

最新評(píng)論