溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

如何解析C++的C++數(shù)組類型

發(fā)布時間:2021-10-27 18:22:26 來源:億速云 閱讀:234 作者:柒染 欄目:編程語言

如何解析C++的C++數(shù)組類型,相信很多沒有經(jīng)驗的人對此束手無策,為此本文總結(jié)了問題出現(xiàn)的原因和解決方法,通過這篇文章希望你能解決這個問題。

C++數(shù)組的類型實際上是指數(shù)組元素的取值類型,對于同一個數(shù)組,其所有元素的數(shù)據(jù)類型都是相同的,數(shù)組名的書寫規(guī)則應(yīng)符合標識符的書寫規(guī)定,希望本文能給大家有用的信息。

例如,假設(shè)要保存一個整型數(shù)組,放五個整型值??梢月暶?span >數(shù)組如下:int myArray[5];這里編譯器為數(shù)組分配圖1.7所示的內(nèi)存空間。由于每個int要4個字節(jié)存儲,所以整個數(shù)組占用20字節(jié)的內(nèi)存空間。

1: #include <iostream.h>    2: #include <conio.h>    3: #pragma hdrstop    4:    5: int main(int argc,char **argv)    6: {    7:char str[]="This is a string.";    8.cout << str << end1;    9.str[7]= '\0';    10. cout << str << end1    11. cout << end1 << "Press any key to continue...";    12: getch();    13: return 0;    14: }

進一步說,如果知道數(shù)組的元素個數(shù),并在聲明數(shù)組時填充數(shù)組,則聲明C++數(shù)組時連數(shù)組長度都可以省略。例如:int myArray[] = {-200, -100,0,100,200 };這是可行的,因為編譯器從賦予的數(shù)值表可以判斷出數(shù)組中元素的個數(shù)和分配給數(shù)組的內(nèi)存空間。

數(shù)組可以是多維的。為了生成兩維整型數(shù)組,這樣就分配15個int空間(共60字節(jié))。數(shù)組的元素可以和一維數(shù)組
樣訪問,只是要提供兩個腳標操作符:int x = mdArray[1][1]+mdArray[2][1];

C++一個強大的特性是能直接訪問內(nèi)存。由于這個特性,C++無法阻止你寫入特定內(nèi)存地址,即使這個地址是程序不讓訪問的。下列代碼是合法的,但會導(dǎo)致程序或Windows崩潰:int array[5];array[5]=10;這是常見的錯誤。

因為C++數(shù)組是以0為基數(shù)的,***腳標應(yīng)是4而不是5。如果重載數(shù)組末尾,則無法知道哪個內(nèi)存被改寫了,使結(jié)果難以預(yù)料,甚至?xí)?dǎo)致程序或Windows崩潰。這類問題很難診斷,因為受影響的內(nèi)存通常要在很久以后才訪問,這時才發(fā)生崩潰(讓你莫名其中之妙)。所以寫入數(shù)組時一定要小心。

C++數(shù)組規(guī)則

數(shù)組是以0為基數(shù)。數(shù)組中的***個元素為0,第二個元素為1,第三個元素為2,等等。
數(shù)組長度應(yīng)為編譯常量。編譯器在編譯時必須知道為數(shù)組分配多少內(nèi)存空間。不能用變量指定C++數(shù)組長度。所以下列代碼不合法
◆大數(shù)組從堆疊(heap)而不是堆棧(stack)中分配(詳見稍后)。
◆從堆疊分配的數(shù)組可以用變量指定數(shù)組長度。

這就在內(nèi)存中分配18字節(jié)的內(nèi)存空間用于存放字串。根據(jù)你的領(lǐng)悟能力,也許你會發(fā)現(xiàn)該字串中只有17個字符。分配18個字節(jié)的原因是字串要以終止null結(jié)尾,C++在分配內(nèi)存空間時把終止null算作一個字符。 終止null是個特殊字符,用|0表示,等于數(shù)值0。程序遇到字符數(shù)組中的0時,表示已經(jīng)到字串末尾。為了說明這點,輸入并運行下列控制臺應(yīng)用程序。

看完上述內(nèi)容,你們掌握如何解析C++的C++數(shù)組類型的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注億速云行業(yè)資訊頻道,感謝各位的閱讀!

向AI問一下細節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

c++
AI