透析C++的C++數(shù)組類型
C++數(shù)組的類型實際上是指數(shù)組元素的取值類型,對于同一個數(shù)組,其所有元素的數(shù)據(jù)類型都是相同的,數(shù)組名的書寫規(guī)則應(yīng)符合標識符的書寫規(guī)定,希望本文能給大家有用的信息。
例如,假設(shè)要保存一個整型數(shù)組,放五個整型值??梢月暶?FONT size=+0>數(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)存地址,即使這個地址是程序不讓訪問的。下列代碼是合法的,但會導致程序或Windows崩潰:int array[5];array[5]=10;這是常見的錯誤。
因為C++數(shù)組是以0為基數(shù)的,***腳標應(yīng)是4而不是5。如果重載數(shù)組末尾,則無法知道哪個內(nèi)存被改寫了,使結(jié)果難以預(yù)料,甚至會導致程序或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)用程序。
【編輯推薦】