直接看代码:
include
using namespace std;
define ROW 3
define COL 4
int main()
{
int ia[ROW][COL] = {0,1,2,3,4,5,6,7,8,9,10,11};
cout<<"利用范围for语句输出二维数组的内容:"<<endl;
for(int(&row)[COL]:ia)
{
for(int &col:row)
printf("%2d ",col);
cout<<endl;
}
cout<<"利用普通for语句和下标输出二维数组的内容:"<<endl;
for(int i=0;i<ROW;i++)
{
for(int j=0;j!=4;j++)
printf("%2d ",ia[i][j]);
cout<<endl;
}
cout<<"利用普通for语句和指针输出二维数组的内容:"<<endl;
for(int (p)[COL]=ia;p!=ia+ROW;p++)
{
for(int q=p;q!=p+COL;q++)
printf("%2d ",*q);
cout<<endl;
}
return 0;
getchar();
}
也可以使用类型别名代替循环控制变量的类型,使得外层循环变量的含义更加直观:
include
using namespace std;
define ROW 3
define COL 4
using iac = int[COL];
int main()
{
int ia[ROW][COL] = {0,1,2,3,4,5,6,7,8,9,10,11};
cout<<"利用范围for语句输出二维数组的内容:"<<endl;
for(iac &row:ia) // 类型别名
{
for(int &col:row)
printf("%2d ",col);
cout<<endl;
}
cout<<"利用普通for语句和下标输出二维数组的内容:"<<endl;
for(int i=0;i<ROW;i++)
{
for(int j=0;j!=4;j++)
printf("%2d ",ia[i][j]);
cout<<endl;
}
cout<<"利用普通for语句和指针输出二维数组的内容:"<<endl;
for(iac p=ia;p!=ia+ROW;p++) // 类型别名
{
for(int q=p;q!=p+COL;q++)
printf("%2d ",*q);
cout<<endl;
}
return 0;
getchar();
}
也可以使用auto关键字自动推断循环控制变量的类型,无需程序员显式指定,使得程序更加简洁直观,也降低了程序编写的难度:
include
using namespace std;
define ROW 3
define COL 4
using iac = int[COL];
int main()
{//代码效果参考:http://www.zidongmutanji.com/bxxx/12894.html
int ia[ROW][COL] = {0,1,2,3,4,5,6,7,8,9,10,11};
cout<<"利用范围for语句输出二维数组的内容:"<<endl;
for(auto &row:ia)
{
for(auto &col:row)
printf("%2d ",col);
cout<<endl;
}
cout<<"利用普通for语句和下标输出二维数组的内容:"<<endl;
for(auto i=0;i<ROW;i++)
{
for(auto j=0;j!=4;j++)
printf("%2d ",ia[i][j]);
cout<<endl;
}
cout<<"利用普通for语句和指针输出二维数组的内容:"<<endl;
for(auto p=ia;p!=ia+ROW;p++)
{
for(auto q=*p;q!=*p+COL;q++)
printf("%2d ",*q);
cout<<endl;
}
return 0;
getchar();
}