在C++語言中,數組可以存儲一個固定大小的相同類型元素的順序集合。所有的數組都是由連續的記憶體位置組成。最低的位址對應第一個元素,最高的位址對應最後一個元素。
數組的聲明形式如下所示:
type arrayName [ arraySize ];
type是任意類型的有效C++資料類型,而arraySize則是一個大于零的整數常量。
如果要通路指定位置的某一個元素的值,可以采用:
arrayName[index]
數組的索引數值從0開始,而不是從1開始。
對數組的初始化可以逐個進行:
#include <iostream>
#include <cstdio>
using namespace std;
int main(){
int arr[3];
arr[0] = 1;
arr[1] = 2;
arr[2] = 3;
cout << arr[0] << endl;
cout << arr[1] << endl;
cout << arr[2] << endl;
return 0;
}
運作的結果為:
1
2
3
對數組的初始化也可以使用一個初始化語句來進行:
#include <iostream>
#include <cstdio>
using namespace std;
int main(){
int arr[3] = {1,2,3};
cout << arr[0] << endl;
cout << arr[1] << endl;
cout << arr[2] << endl;
return 0;
}
運作的結果為:
1
2
3
在C++語言中,如果數組沒有被初始化,那麼未初始化的數組中的元素是随機的。
如果對一個數組進行初始化的時候隻聲明了部分的元素的值,那麼沒有給出的部分的元素的值為0:
#include <iostream>
#include <cstdio>
using namespace std;
int main(){
int arr[3] = {2};
cout << arr[0] << endl;
cout << arr[1] << endl;
cout << arr[2] << endl;
return 0;
}
列印的結果為:
2
0
0
C++中沒有索引越界檢查,以下程式可以正常編譯,但在運作時可能會産生意外輸出:
#include <iostream>
#include <cstdio>
using namespace std;
int main(){
int arr[3] = {1,2,3};
cout << arr[4] << endl;
return 0;
}
運作的結果是:
32767
C++語言也隻是多元數組。
多元數組最簡單的形式是二維數組。一個二維數組,在本質上,是一個一維數組的清單。聲明一個 x 行 y 列的二維整型數組,形式如下:
type arrayName [ x ][ y ];
其中type可以是任意有效的C++資料類型,arrayName是一個有效的C++辨別符。一個二維數組可以被認為是一個帶有 x 行和 y 列的表格。下面是一個二維數組,包含 3 行和 4 列:
初始化可以采取如下所示的方式:
#include <iostream>
using namespace std;
int main(){
int arrNum [3][3] = {
{1,2,3},
{4,5,6},
{7,8,9}
};
for (int i = 0; i<3; i++){
for (int j=0; j<3; j++){
cout << arrNum[i][j] << endl;
}
}
return 0;
}
運作的結果為:
1
2
3
4
5
6
7
8
9
但是同樣的也可以采用如下所示的方式來進行:
#include <iostream>
using namespace std;
int main(){
int arrNum [3][3] = { 1,2,3,4,5,6,7,8,9};
for (int i = 0; i<3; i++){
for (int j=0; j<3; j++){
cout << arrNum[i][j] << endl;
}
}
return 0;
}
這兩者是等同的,不過出于編寫和閱讀上的考量,建議采用第一種方式來進行。
理論上來講,可以建立任意次元的數組,但是一般情況之下,建立的數組是一維和二維的。
如果我們要求取數組的長度,我們不可以直接使用length來求取,而是要采用sizeof來進行求取:
#include <iostream>
using namespace std;
int main(){
int arr[3] = {1,2,3};
cout << "數組中的一個元素的資料大小為:" << sizeof(arr[0]) << endl;
cout << "數組的長度為:" << sizeof(arr)/sizeof(arr[0]) << endl;
return 0;
}
運作的結果為:
數組中的一個元素的資料大小為:4
數組的長度為:3
C++中的數組中的最後一個元素,不能夠直接使用-1來進行通路,而是要先求取數組的長度,在指定最後一個元素的位置。