37.数组——二维数组定义方式
1.数据类型 数组名 [行数][列数];
2.数据类型 数组名 [行数][列数] = {{数据1,数据2}{数据3,数据4}};
3.数据类型 数组名 [行数][列数] = {数据1,数据2,数据3,数据4};
4.数据类型 数组名 [][列数] = {数据1,数据2,数据3,数据4};
推荐使用第二种定义方式,更加直观,增强代码可读性
代码:
int main() {
//二维数组定义方式1 只指定行数和列数 不初始化
int arr[2][2];
arr[0][0] =1;
arr[0][1] =2;
arr[1][0] =3;
arr[1][1] =4;
std::cout<<arr[0][0]<<std::endl;
std::cout<<arr[0][1]<<std::endl;
std::cout<<arr[1][0]<<std::endl;
std::cout<<arr[1][1]<<std::endl;
//用for循环 外层行数 内层列数
for (int i =0; i <2; i++) {
for (int j =0; j <2; j++) {
std::cout<<arr[i][j]<<std::endl;
}
}
//数组定义方式2
int arr1[2][2] = {
{5,6},
{7,8}
};
for (int i =0; i <2; i++) {
for (int j =0; j <2; j++) {
std::cout<<arr1[i][j]<<" ";
}
std::cout<<std::endl;
}
//数组定义方式3
int arr2[2][2] = {9,10,11,12};
for (int i =0; i <2; i++) {
for (int j =0; j <2; j++) {
std::cout<<arr2[i][j]<<" ";
}
std::cout<<std::endl;
}
//数组定义方式4
int arr3[][2] = {13,14,15,16};
for (int i =0; i <2; i++) {
for (int j =0; j <2; j++) {
std::cout<<arr3[i][j]<<" ";
}
std::cout<<std::endl;
}
}
运行结果:
1
2
3
4
1
2
3
4
5 6
7 8
9 10
11 12
13 14
15 16
38.二维数组——数组名
作用:查看二维数组所占内存空间
获取二维数组首地址
代码:
int main() {
int arr[2][3] = {
{1,2,3},
{4,5,6}
};
std::cout<<"二维数组占用的空间为:"<<sizeof(arr)<<std::endl;
std::cout<<"二维数组第一行占用的空间为:"<<sizeof(arr[0])<<std::endl;
std::cout<<"二维数组行数为:"<<sizeof(arr)/sizeof(arr[0])<<std::endl;
std::cout<<"二维数组列数为:"<<sizeof(arr[0])/sizeof(arr[0][0])<<std::endl;
std::cout<<"二维数组元素个数为:"<<sizeof(arr)/sizeof(arr[0][0])<<std::endl;
std::cout<<"二维数组首地址为:"<<arr<<std::endl;
std::cout<<"二维数组第一行首地址为:"<<arr[0]<<std::endl;
std::cout<<"二维数组第二行首地址为:"<<arr[1]<<std::endl;
}
运行结果;
二维数组占用的空间为:24
二维数组第一行占用的空间为:12
二维数组行数为:2
二维数组列数为:3
二维数组元素个数为:6
二维数组首地址为:0x7bfe00
二维数组第一行首地址为:0x7bfe00
二维数组第二行首地址为:0x7bfe0c
地址为16进制,10进制的12在16进制里就是c(a是10,b是11,c是12)
作用类似一维数组
demo:考试成绩统计
代码:
int main() {
int score[3][3] = {
{100,100,100},
{90,50,100},
{60,70,80}
};
for (int i =0; i <3; i++) {
int sum =0;//统计总分
for (int j =0; j <3; j++) {
std::cout<<score[i][j]<<" ";
sum = sum + score[i][j];
}
std::cout<<"该学生总分为:"<<sum<<std::endl;
std::cout<<std::endl;
}
}
运行结果:
100 100 100 该学生总分为:300
90 50 100 该学生总分为:240
60 70 80 该学生总分为:210