在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来进行访问,而是要先求取数组的长度,在指定最后一个元素的位置。