前言
内容源自链接
一、关于C++二维数组
数组名和函数名一样,可以当做指针(普通指针和函数指针)来用。
二、示例代码
1.传数组,第⼆维必须标明
代码如下(示例):
#include <iostream>
usingnamespace std;
/*传⼆维数组*/
/*void display(int arr[][4])*/
void display1(int arr[][4],constint irows)
{
for (int i=0;i<irows;++i)
{
for(int j=0;j<4;++j)
{
cout<<arr[i][j]<<""; //可以采⽤parr[i][j]
}
cout<<endl;
}
cout<<endl;
}
2.一重指针,传数组指针,第二维必须标明
代码如下(示例):
/*void display(int (*parr)[4])*/
void display2(int (*parr)[4],constint irows)
{
for (int i=0;i<irows;++i)
{
for(int j=0;j<4;++j)
{
cout<<parr[i][j]<<""; //可以采⽤parr[i][j]
}
cout<<endl;
}
cout<<endl;
}
//注意:parr[i]等价于*(parr+i),⼀维数组和⼆维数组都适⽤
3.传指针,不管是几维数组都看做指针
代码如下(示例):
/*void display3(int *arr)*/
void display3(int *arr,constint irows,constint icols)
{
for(int i=0;i<irows;++i)
{
for(int j=0;j<icols;++j)
{
cout<<*(arr+i*icols+j)<<""; //注意:(arr+i*icols+j),不是(arr+i*irows+j)
}
cout<<endl;
}
cout<<endl;
}
应用
int main()
{
int arr[][4]={0,1,2,3,4,5,6,7,8,9,10,11};
int irows=3;
int icols=4;
display1(arr,irows);
display2(arr,irows);
//注意(int*)强制转换.个⼈理解:相当于将a拉成了⼀维数组处理。
display3((int*)arr,irows,icols);
return0;
}
总结
推荐使用第2种方式,简单明了。