在之前的教訓,你知道你可以用結構聚合許多不同資料型別到乙個變數中。然而,結構並不是唯一的聚合資料型別。陣列是乙個集合的資料型別,允許您訪問多個變數通過乙個名字乙個索引的使用。在c++中,所有這些變數必須具有相同的型別。
考慮一下這種情況:您想記錄30名學生的考試成績。這樣做,你會分配30變數!
1
2
3
4
5
int
ntestscorestudent1;
int
ntestscorestudent2;
int
ntestscorestudent3;
// ...
int
ntestscorestudent30;
陣列給我們乙個更容易的方法:
1
int
antestscores[30];
// allocate 30 integers
在上面的例子中,我們宣告乙個陣列antestscores命名。陣列定義中使用時,下標運算子()是用來告訴編譯器有多少變數分配。在這種情況下,我們分配30整數。這些變數稱為乙個陣列元素。
訪問我們的每個30整數陣列元素,我們使用與乙個整數引數稱為索引下標運算子,我們想要告訴編譯器哪個變數。陣列的第乙個元素叫antestscores[0]。第二個是antestscores[1]。第十是antestscores[9]。注意,在c++中,陣列總是計數從零!這意味著乙個陣列大小n的陣列元素通過n - 1 0。這是尷尬的新程式設計師用來計數(從1開始)。
注意,下標操作符實際上有兩個用途:下標變數宣告,告訴有多少元素分配。當使用陣列,陣列元素的下標告訴訪問。
1
2
int
anarray[5];
// allocate 5 integers
anarray[0] = 7;
// put the value 7 in element 0
讓我們看看乙個簡單的程式,它使用陣列:
1
2
3
4
5
6
7
int
anarray[3];
// allocate 3 integers
anarray[0] = 2;
anarray[1] = 3;
anarray[2] = 4;
int
nsum = anarray[0] + anarray[1] + anarray[2];
cout <<
"the sum is "
<< nsum << endl;
變數記憶體分配
預備知識 程式的記憶體分配 乙個由c c 編譯的程式占用的記憶體分為以下幾個部分 1 棧區 stack 由編譯器自動分配釋放 存放函式的引數值,區域性變數的值等。其操作方式類似於資料結構中的棧。2 堆區 heap 一般由程式設計師分配釋放,若程式設計師不釋放,程式結束時可能由os 注意它與資料結構中...
變數記憶體分配
變數記憶體分配 預備知識 程式的記憶體分配 乙個由c c 編譯的程式占用的記憶體分為以下幾個部分 1 棧區 stack 由編譯器自動分配釋放 存放函式的引數值,區域性變數的值等。其操作方式類似於資料結構中的棧。2 堆區 heap 一般由程式設計師分配釋放,若程式設計師不釋放,程式結束時可能由os 注...
變數的記憶體分配
1 從靜態儲存區域分配。內存在程式編譯的時候就已經分配好,這塊內存在程式的整個執行期間都存在。例如全域性變數,static變數。2 在棧上建立。在執行函式時,函式內區域性變數的儲存單元都可以在棧上建立,函式執行結束時這些儲存單元自動被釋放。棧記憶體分配運算內置於處理器的指 令集中,效率很高,但是分配...