目录
一、数组的概述
定义:就是指一个集合,存放了相同类型的数据元素。arr[4]数组中,arr被称为数组名,4被称为下标。可以通过下标来访问对应的数组元素。
特点:
- 数组中每个数据元素都是相同的数据类型
- 数据是由连续的内存位置组成的
二、一维数组
定义方式:
- 数据类型 数组名[数组长度];
- 数据类型 数组名[数组长度] = { 值1,值2 ... };
- 数组类型 数组名[ ] = { 值1,值2 ... }; (系统自动分配长度)
//数据类型 数组名[数组长度];
int arr1[5];
//数据类型 数组名[数组长度] = { 值1,值2 ... };
int arr2[5] = { 1,2,3,4,5 };
//数组类型 数组名[ ] = { 值1,值2 ... }; (系统自动分配长度)
int arr3[] = { 1,2,3 };
给数组进行赋值:
因为数组可以通过下标进行访问,所以可以通过下标给对应的数组元素赋值。
注意:数组arr[n]的下标从0开始到n-1结束,如以下对arr[5]赋值,并通过for循环遍历输出:
//赋值
arr1[0] = 1;
arr1[1] = 2;
arr1[2] = 3;
arr1[3] = 4;
arr1[4] = 5;
//for循环遍历输出
for (int i = 0; i < 5; i++) {
cout << arr1[i] << endl;
}
数组名:
用途:
- 可以统计整个数组在内存中的长度,如arr[]={...}的长度。
- 可以获取数组在内存中的首地址
获取整个数组在内存中的长度可以使用sizeof关键字(用于获取数据内存大小)达成目的。
//可以统计整个数组在内存中的长度,如arr[]={...}的长度。
int arr[] = { 1,2,3 };
cout << "数组arr总共占据内存大小为:" << sizeof(arr) << endl;
cout << "数组arr每个元素所占据的内存大小为:" << sizeof(arr[0]) << endl;//数组元素的数据类型相同。
cout << "数组arr的元素个数为:" << sizeof(arr) / sizeof(arr[0]) << endl;
//可以获取数组在内存中的首地址
cout << "数组arr的首地址为:" << (int)arr << endl;//将内存位置转为整型。
cout << "数组arr第一个元素地址为:" << (int)&(arr[0]) << endl;
cout << "数组arr第二个元素地址为:" << (int)&(arr[1]) << endl;
代码中&为取地址符号,指针的内容将会进一步认识。
同时数组名默认为常量,不可进行赋值操作。
三、二维数组
定义:
二维数组就是在一维数组上多建一个维度。(如教室排列从行的排序多加一个列的排序)
定义方式:
- 数据类型[ 行 ][ 列 ];
- 数据类型[ 行 ][ 列 ] = { { 数据1,数据2... } , {数据1,数据2...} };
- 数据类型[ 行 ][ 列 ] = { 数据1,数据2... };
- 数据类型[ ][ 列 ] = { 数据1,数据2... };
第三种和第四种会由系统自动分配行与列。第二种可以提高代码可读性,更加直观。
//数据类型 数组名[ 行 ] [ 列 ];
int arr1[2][2];
arr1[0][0] = 1;
arr1[0][1] = 2;
arr1[1][0] = 3;
arr1[1][1] = 4;
//数据类型 数组名[ 行 ] [ 列 ] = { {数据1,数据2...} , {数据m , 数据n...} }
int arr2[2][2] = { {1,2},{3,4} };
//数据类型 数组名[ 行 ] [ 列 ] = { 数据1,数据2... }
int arr3[2][2] = { 1,2,3,4 };
//数据类型 数组名[ ] [ 列 ] = { 数据1,数据2... }
int arr4[][2] = { 1,2,3,4 };
使用for循环遍历其中一个数组:
//使用for循环遍历其中一个数组
for (int i = 0; i < 2; i++) {
for (int j = 0; j < 2; j++) {
cout << arr1[i][j] << endl;
}
}
数组名:
和一维数组一样,数组名可以查看其所占内存空间及其首地址。
可以通过以下示例来获取对应的二维数组信息(以上面代码的arr1为例):
//内存空间
cout << "二维数组大小:" << sizeof(arr1) << endl;
cout << "二维数组一行大小:" << sizeof(arr1[0]) << endl;
cout << "二维数组元素大小:" << sizeof(arr1[0][0]) << endl;
cout << "二维数组行数:" << sizeof(arr1) / sizeof(arr1[0]) << endl;
cout << "二维数组列数:" << sizeof(arr1[0]) / sizeof(arr1[0][0]) << endl;
//地址
cout << "二维数组首地址:" << arr1 << endl;
cout << "二维数组第一行地址:" << arr1[0] << endl;
cout << "二维数组第二行地址:" << arr1[1] << endl;
cout << "二维数组第一个元素地址:" << &arr1[0][0] << endl;
cout << "二维数组第二个元素地址:" << &arr1[0][1] << endl;
结果如下所示: