日志16(二维数组)
一、概述
1.1二维数组的定义
二维数组本质上是一个行列式的组合,也就是说二维数组是由行和列两部分组成。二维数组数据是通过行列解读。
二维数组可被视为一个特殊的一维数组,相当于二维数组又是一个一维数组,只不过它的元素是一维数组。(也就是说数组的元素可以是数组类型)。
1.2二维数组的定义方式
二维数组的定义方式有4种:
- 数据类型 数组名[行数][列数];
- 数据类型 数组名[行数][列数]={ {数据1,数据2,数据3},{数据4,数据5,数据6} };
- 数据类型 数组名[行数][列数]={ 数据1,数据2,数据3,数据4,数据5,数据6 };
- 数据类型 数组名[ ][列数]={ 数据1,数据2,数据3,数据4,数据5,数据6 };
/** 定义数组 */
int main()
{
int ar[2][3]; // 2 行 3列 未初始化
int br[2][3]={{1,2,3},{4,5,6,}};
int cr[2][3]={1,2,3,4,5,6};
int dr[][3]={1,2,3,4,5,6};
return 0;
}
建议:以上四种,利用第二种更加直观,提高代码的可读性。
1.3二维数组名称
1.3.1二维数组名称用途
1.可以查看占用内存空间大小
int arr[2][3]={{1,2,3},{4,5,6,}};
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;
2.可以查看二维数组的首地址
cout<<"二维数组的首地址为: "<<arr<<endl;//16进制 cout<<"二维数组的首地址为: "<<(int)arr<<endl;//强转为10进制 cout<<"二维数组第一行首地址"<<(int)arr[0]<<endl; cout<<"二维数组第二行首地址"<<(int)arr[1]<<endl; cout<<"二维数组第一个元素首地址"<<(int)&arr[0][0]<<endl;
二维数组的首地址和二维数组第一行和二维数组第一个元素相同。
取元素的首地址必须有取地址符&。
#include <iostream>
using namespace std;
int main()
{
double a[5][5];
for (int i=0;i<5;i++)
{
double sum=0.0;
for(int j=0;j<5;j++)
{
cin>>a[i][j];
sum+=a[i][j];
printf("%.1f ",a[i][j]);
}
printf("%.1f",sum);
cout<<endl;
}
return 0;
}
