数组:一个存放了相同数据类型的元素的集合。数组存放在一块连续的内存空间中,通过数组名加索引来访问数组中的每一个元素。
1.一维数组
1.1 定义方式
一维数组的定义方式有三种:
(1)数据类型 数组名[数组长度];
(2)数据类型 数组名[数组长度] = {值1,值2,值3,……};
(3)数据类型 数组名[ ] = {值1,值2,值3,……};
注:用方式(2)定义数据时,如果初始化数据没有全部填写,没填写的元素会自动初始化为0
int arr1[5];//定义数组长度为5的整型数组
char arr2[3]={'a','b','c'};//定义数组长度为3的字符型数组
float arr3[]={1.1, 2.2, 3.3, 4.4};//定义数组长度为4的浮点型数组
1.2 数组元素的调用
数组名加索引(下标)调用数组中的元素。
int arr[5]={10,20,30};//定义数组
//数组的下标从0开始
cout << arr[0] <<endl;//10
cout << arr[1] <<endl;//20
cout << arr[2] <<endl;//30
cout << arr[3] <<endl;//0
cout << arr[4] <<endl;//0
1.3 获取数组长度
sizeof()可以统计一个数据所占的内存空间大小。又由于数组中的每一个元素的数据类型相同,因此可以用整个数组的内存空间大小除以数组中一个元素所占的内存空间大小来算出数组长度。
示例
#include <iostream>
using namespace std;
int main()
{
int arr[5] = { 1,2,3,4,5 };
cout << "整个数组的内存空间大小:" << sizeof(arr) << endl;
cout << "数组中一个元素所占的内存空间大小:" << sizeof(arr[0]) << endl;
cout << "数组长度:" << sizeof(arr) / sizeof(arr[0]) << endl;
system("pause");
return 0;
}
运行结果
整个数组的内存空间大小:20
数组中一个元素所占的内存空间大小:4
数组长度:5
1.4 获取数组首地址
数组名是常量,指向一块空间首地址。 因此可以输出数组名查询首地址。
//两种方式获取数组首地址
cout << arr << endl;
cout << &arr[0] << endl;
2.二维数组
2.1 定义方式
二维数组的定义方式:
(1)数据类型 数组名[行数][列数];
(2)数据类型 数组名[行数][列数] = { {值1,值2},{值3,值4},……};
(3)数据类型 数组名[行数][列数] = {值1,值2,值3,值4,……};
(4)数据类型 数组名[ ][列数] = {值1,值2,值3,值4,……};
注:如果初始化数据不完整,会自动初始化为0
//1.数据类型 数组名[行数][列数];
int arr1[2][3]; //2行3列的二维数组
//2.数据类型 数组名[行数][列数] = { {值1,值2},{值3,值4},……};
int arr2[2][3] = { {10,20,30}, {40,50,60} }; //最为直观的定义方法
//3.数据类型 数组名[行数][列数] = {值1,值2,值3,值4,……};
int arr3[2][3] = { 10,20,30,40,50,60 }; //自动将元素划分为2行3列
//4.数据类型 数组名[ ][列数] = {值1,值2,值3,值4,……};
int arr4[][3] = { 10,20,30,40,50,60 }; //可以省略行数,但不能省略列数
2.2 二维数组元素的调用
数组名加行号和列号(下标)调用数组中的元素。行和列下标都从0开始。
int arr[2][3] = { {10,20,30}, {40,50,60} };//定义数组
for (int i = 0; i < 2; i++)
{
for (int j = 0; j < 3; j++)
{
cout << arr[i][j] << " ";
}
cout << endl;
}
2.3 计算二维数组的行数和列数
行数 = 二维数组总内存 / 单行的内存
列数 = 单行的内存 / 一个元素的内存
#include <iostream>
using namespace std;
int main()
{
int arr[2][3] = { {10,20,30},{40,50,60} };//定义数组
cout << "二维数组的总内存为:" << sizeof(arr) << endl;
cout << "二维数组第一行的内存为:" << sizeof(arr[0]) << endl;
cout << "二维数组第一个元素的内存为:" << sizeof(arr[0][0]) << endl;
cout << "二维数组的行数为:" << sizeof(arr) / sizeof(arr[0]) << endl;
cout << "二维数组的列数为:" << sizeof(arr[0]) / sizeof(arr[0][0]) << endl;
system("pause");
return 0;
}
运行结果
二维数组的总内存为:24
二维数组第一行的内存为:12
二维数组第一个元素的内存为:4
二维数组的行数为:2
二维数组的列数为:3