在行的基础上多了一个列,常常以矩阵的形式呈现
一.四种定义方式
1. 数据类型 数组名【行数】【列数】;
如 int arr[3][2]
arr[0][0] | arr[0][1] |
arr[1][0] | arr[1][1] |
arr[2][0] | arr[2][1] |
答应打印数组中的数据都可以用双层循环打印
#include<iostream>
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;
//外层循环打印行数;内层循环打印列数
for(int i=0;i<2;i++)
{
for(int j=0;j<3;j++){
cout<<arr[i][j]<<endl;
}
}
return 0;
}
运行结果
2.数据类型 名【行数】【列数】={{数据一,数据二},{数据三,数据四}};!!!这哥们儿最常用
#include<iostream>
using namespace std;
int main()
{//直观
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;
}
return 0;
}
3.数据类型 名【行数】【列数】={数据一,数据二,数据三,数据四}
系统默认分配,但不是很直观
int arr[2][3]={1,2,3,4,5,6};
这里会默认一行三个,那么前三个数字就被收在第一行
4. 数据类型 名【】【列】={数据一,数据二,数据三,数据四};
int arr[][3]={1,2,3,4,5,6};
系统可以推算出一共有三列,那么6/3=2,所以是有两行
行数可以省略但是列数不可以
二.二维数组的数组名
作用
1.查找二维数组所占用的内存
2.获取二维数组的首地址
int main()
{//直观
int arr[][3]={1,2,3,4,5,6};
cout<<"二维数组占用的内存空间"<<sizeof(arr)<<endl;
cout<<"二维数组第一行占用的内存"<<sizeof(arr[0])<<endl;
cout<<"二维数组第一个元素占用的内存为"<<sizeof(arr[0][1]) <<endl;
cout<<"二维数组的行数"<<sizeof(arr)/sizeof(arr[0])<<endl;
cout<<"二维数组的列数"<<sizeof(arr[0])/sizeof(arr[0][1])<<endl ;
cout<<"二维数组的首地址"<<arr<<endl;
cout<<"二维数组第一行的首地址"<<arr[0]<<endl;
cout<<"二维数组中第一个元素的首地址"<<&arr[0][0]<<endl;
三.练习
输出多行成绩总和
#include<iostream>
#include<string>
using namespace std;
int main()
{
int grade[3][3]=
{
{100,100,100},
{90,50,100},
{60,70,80}
};
string name[3]={"张三","李四","王五"};
for(int i=0;i<3;i++)
{
int sum=0;
for(int j=0;j<3;j++)
{ sum+=grade[i][j] ;}
cout<<name[i]<<"的总分为"<<sum<<endl; }
return 0;
}
注意,在使用string时要加上头文件 #include<iostream>