二维数组
- 1.定义
- 2.初始化
- 3.赋值和输出
- 4.二维数组名
理解:二维数组是一维数组的一种延伸,假如将一维数组比喻成一条由点构成的线,而二维就是由点构成的面.
1.定义
数据类型 数组名 [行数][列数]
例:int arr[2][4];
表示:
1.定义了一个int类型,数组名为arr的二维数组.
2.arr数组有2行4列.
3.下标都是从0开始.
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIyZuBnLzMDO1MTNxkTM2ITMwEjMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
4.当程序运行时,将为数组arr开辟2 × \times × 2 × \times × 4=32字节的 连续空间.
2.初始化
1.数据类型 数组名[行][列]={{数据1,数据2…},{数据n,数据n+1…}…};
例: int arr[2][3]={{1,2,3},
{4,5,6}};
2.数据类型 数组名[行][列]={数据1,数据2,…};
例: int arr[2][3]={1,2,3,4,5,6};
3.数据类型 数组名[][列]={数据1,数据2,…};
例: int arr[][3]={1,2,3,4,5,6};
注:在定义二维数组,如果初始化数据,可以省略行数
3.赋值和输出
通过数组下标进行赋值和输出.
代码:
#include <iostream>
using namespace std;
int main ()
{
int arr[2][3];
int arr1[2][3];
//1.选择性赋值和输出
arr[0][0]=5;
arr[0][1]=6;
arr[1][0]=4;
arr[1][2]=34;
cout<<arr[1][2]<<endl;
cout<<arr[0][1]<<endl;
//2.通过循环进行赋值和输出
cout<<"请输入6个整数:"<<endl;
for(int i=0;i<2;i++)
for(int j=0;j<3;j++)
{
cin>>arr[i][j];
}
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;
}
运行结果:
4.二维数组名
1.查找二维数组所占的内存空间的大小
用sizeof关键字来进行访问
2.查找二维数组的地址
代码:
#include <iostream>
using namespace std;
int main ()
{
int arr[2][3];
arr[0][0]=5;
arr[0][1]=6;
arr[1][0]=4;
arr[1][2]=34;
//二维数组名
//查看内存空间
cout<<"二维数组arr的内存空间:"<<sizeof(arr)<<endl;
//结果为24而不是16,说明在程序运行到int arr[2][3]时,编译器是直接开辟2*3*4=32的内存空间
cout<<"二维数组arr第二行的内存空间:"<<sizeof(arr[1])<<endl;
cout<<"二维数组arr的第一行第一列的内存空间为:"<<sizeof(arr[0][0])<<endl;
//行数计算
cout<<"二维数组arr的行数:"<<sizeof(arr)/sizeof(arr[0]) <<endl;
//列数计算
cout<<"二维数组arr的列数:"<<sizeof(arr[0])/sizeof(arr[0][0])<<endl;
//查看地址
cout<<"二维数组arr的首地址:"<<arr<<endl;
cout<<"二维数组arr第一行地址:"<<arr[0]<<endl;
cout<<"二维数组arr第二行地址:"<<arr[1]<<endl;
cout<<"二维数组arr第一个元素的地址:"<<&arr[0][0]<<endl;
//二维数组arr的首地址=arr第一行的地址=arr的第一个元素的地址
system("pause");
return 0;
}
运行界面: