日志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; }