目录
一、一维数组
1.一维数组的特点
2.一维数组的定义方式
2.1数据类型 数组名[ 数据长度 ];
代码:
运行结果:
2.2数据类型 数组名[数组长度] = {数据1,数据2,...};
代码:
运行结果:
2.3数据类型 数组名[ ] = {数据1,数据2,...};
代码:
运行结果:
3.一维数组数组名
数组名的作用:
3.1如何统计数组在内存中的长度?
代码:
运行结果:
3.2如何获取数组在内存中的首地址?
代码:
运行结果:
注意事项:数组名不可以进行赋值操作,arr = 1;这种写法是错误的。
二、二维数组
1.二维数组的定义方式
1.1方式1:数据类型 数组名[ 行数 ][ 列数 ];
代码:
运行结果:
1.2数据类型 数组名[ 行数 ][ 列数 ] = { {数据1,数据2,...},{数据3,数据4,...} };
代码:
运行结果:
1.3方式3:数据类型 数组名[ 行数 ][ 列数 ] = {数据1,数据2,数据3,数据4,...};
代码:
运行结果:
编辑
1.4方式4:数据类型 数组名[ ][ 列数 ] = {数据1,数据2,数据3,数据4,...};
代码:
运行结果:
2.二维数组数组名
数组名的作用:
2.1如何统计数组在内存中的长度?
代码:
运行结果:
2.2如何获取二维数组在内存中的首地址?
代码:
运行结果:
数组就是数学里面的一个集合,集合里面存放了相同数据类型的元素。
对于多个相同类型的数据来说,用数组表示更方便。
一、一维数组
1.一维数组的特点
特点1:数组中的每个元素都是相同的数据类型
特点2:数组是由连续的内存空间组成的
2.一维数组的定义方式
一维数组有三种定义方式:
方式1:数据类型 数组名[ 数据长度 ];
方式2:数据类型 数组名[ 数据长度 ] = {数据1,数据2,...};
方式3:数据类型 数组名[ ] = {数据1,数据2,...};
在定义数组名时注意不要与变量名相同。
例:分别用三种数组的定义方式来输出一组数据76,73,97,26,4,85,3
2.1数据类型 数组名[ 数据长度 ];
代码:
#include
uisng namespace std;
int main()
{
int arr[7];//7是数组中元素的个数
arr[0] = 76;//0~6为数组的下标。下标都是从0开始。
arr[1] = 73;
arr[2] = 97;
arr[3] = 26;
arr[4] = 4;
arr[5] = 85;
arr[6] = 3;
cout << arr[0] << endl;//分别输出这7个数
cout << arr[1] << endl;
cout << arr[2] << endl;
cout << arr[3] << endl;
cout << arr[4] << endl;
cout << arr[5] << endl;
cout << arr[6] << endl;
system("pause");
return 0;
}
运行结果:
#includeuisng namespace std; int main() { int arr[7];//7是数组中元素的个数 arr[0] = 76;//0~6为数组的下标。下标都是从0开始。 arr[1] = 73; arr[2] = 97; arr[3] = 26; arr[4] = 4; arr[5] = 85; arr[6] = 3; cout << arr[0] << endl;//分别输出这7个数 cout << arr[1] << endl; cout << arr[2] << endl; cout << arr[3] << endl; cout << arr[4] << endl; cout << arr[5] << endl; cout << arr[6] << endl; system("pause"); return 0; }
运行结果:
2.2数据类型 数组名[数组长度] = {数据1,数据2,...};
代码:
#include
using namespace std;
int main()
{
int arr[7] = { 76,73,97,26,4,85,3 };
//用循环结构,打印输出
for(int i = 0; i < 7; i ++)
{
cout << arr[i] << endl;
}
system("pause");
return 0;
}
运行结果:
用这种方式定义数组,定义的数组长度如果小于数组元素的个数,会报错!!!
比如我们把 int arr[7] = { 76,73,97,26,4,85,3 }; 改为int arr[6] = { 76,73,97,26,4,85,3 };会出现以下情况:
如果我们定义的数组元素的个数 < 数组长度,那么剩下的元素会被0填满,如下:
2.3数据类型 数组名[ ] = {数据1,数据2,...};
代码:
#include
using namespace std;
int main()
{
int arr[] = { 76,73,97,26,4,85,3 };
for(int i = 0; i < 7; i++)
{
cout << arr[i] << endl;
}
system("pause");
return 0;
}
此种方式定义数组时,不需要我们自己定义数组的长度,特别是当数组元素特别多时,我们可以用这种定义方式,因为系统会自己统计出长度,如下图:
运行结果:3.一维数组数组名
数组名的作用:
1、可以统计整个数组在内存中所占用的内存空间
2、可以获取数组在内存中的首地址
3.1如何统计数组在内存中的长度?
代码:
#include
using namespace std;
int main()
{
int arr[5] = {1,2,3,4,5};
cout << "arr数组占用内存空间为:" << sizeof(arr) << endl;
cout << "其中一个元素arr[0]占用内存空间为:" << sizeof(arr[0]) << endl;
cout << "arr数组中有 " << sizeof(arr) / sizeof(arr[0]) << " 个元素" << endl;
system("pause");
return 0;
}
运行结果:
一个int型占4字节,数组中有5个int型数据,所以占20个字节。
3.2如何获取数组在内存中的首地址?
代码:
#include
using namespace std;
int main()
{
int arr[5] = {1,2,3,4,5};
cout << "arr数组的首地址为:" << arr << endl;
//&为取地址符,如果不加&,那么将会打印arr[0]对应的元素,也就是1
cout << "arr数组中第一个元素的地址为:" << &arr[0] << endl;
system("pause");
return 0;
}
运行结果:
结果相同是因为整个数组的首地址与第一个元素的地址是重叠的,如果打印第二个元素的地址,那么输出结果为007EF994,因为第一个元素占用4字节,这也印证了数组是一段连续的内层空间。而且没运行一起,首地址都会变,是因为每次分配的内存空间不一样,是内存空间动态管理的。
如果不加取地址符&,那么输出结果将会是:
注意事项:数组名不可以进行赋值操作,arr = 1;这种写法是错误的。
二、二维数组
二维数组比一维数组多一个维度,就像矩阵。
1.二维数组的定义方式二维数组有四种定义方式:
方式1:数据类型 数组名[ 行数 ][ 列数 ];
方式2:数据类型 数组名[ 行数 ][ 列数 ] = { {数据1,数据2,...},{数据3,数据4,...} };
方式3:数据类型 数组名[ 行数 ][ 列数 ] = {数据1,数据2,数据3,数据4,...};
方式4:数据类型 数组名[ ][ 列数 ] = {数据1,数据2,数据3,数据4,...};
在这四种方式中,方式2更加直观,更利于代码的阅读。
分别用4种定义方式,定义一个2行3列的二维数组。
1.1方式1:数据类型 数组名[ 行数 ][ 列数 ];
代码:
#include
using namespace std;
int main()
{
int arr[2][3];
arr[0][0] = 1;
arr[0][1] = 2;
arr[0][2] = 3;
arr[1][0] = 4;
arr[1][1] = 5;
arr[1][2] = 6;
//逐个输出(这种方式代码行数很多,显得很笨重)
cout << arr[0][0] << " ";
cout << arr[0][1] << " ";
cout << arr[0][2] << endl;
cout << arr[1][0] << " ";
cout << arr[1][1] << " ";
cout << arr[1][2] << endl;
cout << endl;
//利用嵌套循环,打印这个数组的元素
//外层循环打印行,内层循环打印列
for (int i = 0; i < 2; i++)
{
for (int j = 0; j < 3; j++)
{
cout << arr[i][j] << " ";
}
cout << endl;
}
system("pause");
return 0;
}
运行结果:
1.2数据类型 数组名[ 行数 ][ 列数 ] = { {数据1,数据2,...},{数据3,数据4,...} };
代码:
#include
using namespace std;
int main()
{
//方式2:数据类型 数组名[行数][列数] = { {数据1,数据2,...},{数据3,数据4,...} };
int arr[2][3] = { {1,2,3} ,{4,5,6} };
for (int i = 0; i < 2; i++)
{
for (int j = 0; j < 3; j++)
{
cout << arr[i][j] << " ";
}
cout << endl;
}
system("pause");
return 0;
}
运行结果:
1.3方式3:数据类型 数组名[ 行数 ][ 列数 ] = {数据1,数据2,数据3,数据4,...};
代码:
#include
using namespace std;
int main()
{
//方式3:数据类型 数组名[行数][列数] = { 数据1,数据2,数据3,数据4,... };
int arr[2][3] = { 1,2,3,4,5,6 };
for (int i = 0; i < 2; i++)
{
for (int j = 0; j < 3; j++)
{
cout << arr[i][j] << " ";
}
cout << endl;
}
system("pause");
return 0;
}
运行结果:
1.4方式4:数据类型 数组名[ ][ 列数 ] = {数据1,数据2,数据3,数据4,...};
代码:
#include
using namespace std;
int main()
{
//方式4:数据类型 数组名[][列数] = { 数据1,数据2,数据3,数据4,... };
int arr[][3] = { 1,2,3,4,5,6 };
for (int i = 0; i < 2; i++)
{
for (int j = 0; j < 3; j++)
{
cout << arr[i][j] << " ";
}
cout << endl;
}
system("pause");
return 0;
}
运行结果:
1.4方式4:数据类型 数组名[ ][ 列数 ] = {数据1,数据2,数据3,数据4,...};
代码:
#include
using namespace std;
int main()
{
//方式4:数据类型 数组名[][列数] = { 数据1,数据2,数据3,数据4,... };
int arr[][3] = { 1,2,3,4,5,6 };
for (int i = 0; i < 2; i++)
{
for (int j = 0; j < 3; j++)
{
cout << arr[i][j] << " ";
}
cout << endl;
}
system("pause");
return 0;
}
运行结果:
2.二维数组数组名 数组名的作用:
1、可以统计二维数组在内存中所占用的内存空间
2、可以获取二维数组在内存中的首地址
2.1如何统计数组在内存中的长度?
代码:
//可以统计二维数组在内存中所占用的内存空间
#include
using namespace std;
int main()
{
double arr[2][3] = { {1.45,2.87,3.05} ,{4.89,5.34,6.76} };
cout << "二维数组在内存中所占用的内存空间为:" << sizeof(arr) << endl;
cout << "二维数组第1行所占用的内存空间为:" << sizeof(arr[0]) << endl;
cout << "二维数组第1个元素所占用的内存空间为:" << sizeof(arr[0][0]) << endl;
cout << "这个二维数组有 " << sizeof(arr) / sizeof(arr[0]) << " 行 ";
cout << sizeof(arr[0]) / sizeof(arr[0][0]) << " 列" << endl;
system("pause");
return 0;
}
运行结果:
2.2如何获取二维数组在内存中的首地址?
代码:
//2、可以获取二维数组在内存中的首地址
#include
using namespace std;
int main()
{
double arr[2][3] = { {1.45,2.87,3.05} ,{4.89,5.34,6.76} };
cout <<"二维数组的首地址为:"<< arr << endl;
cout <<"二维数组第1行的首地址为:" << arr[0] << endl;
cout <<"二维数组第一个元素的地址为:"<< & arr[0][0] << endl;
system("pause");
return 0;
}
运行结果:
与一维数组一样,第一个元素的首地址与第一行以及整个数组的首地址重合,因此结果相同。
这个地址是16进制表示的,可以用强制转换将16进制转换成10进制:
cout <<"二维数组的首地址为:"<< arr << endl;
改为
cout <<"二维数组的首地址为:"<< (int)arr << endl;



