最近在学c++ 总结了一下这几种打印方式
int ia[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};
数组本尊在此1.完全c风格的输出二维数组
p指向含有四个整数的数组,则*p就是那个数组,而数组名就是数组首元素的指针,所以*p即为p所指向的那个数组的首元素的指针
for(int(*p)[4]=ia;p!=ia+3;++p){//注意是!=而不是<
for(int *q=*p;q!=*p+4;++q){
cout<<*q<<' ';
}
cout<<endl;
}
2.c++风格
for ( auto p = begin(ia) ; p != end(ia); ++p) { //用begin()和end()来替代手工的控制变量
for ( auto q = begin(*p); q != end(*p); ++q ) {
cout<<*q<<' ';
}
cout<<endl;
}
3.使用了类型别名的c风格
using int_array=int[4];
//typedef int int_array[4];//等价上一语句
for(int_array *p=ia;p!=ia+3;++p){
for(int *q=*p;q!=*p+4;++q){
cout<<*q<<' ';
}
cout<<endl;
}
4.使用范围for的方式(p指向的是包含了四个int的数组)
for(int (&p)[4]:ia){ //除了最内层随意之外,外层的for都必须用&(引用方式),如果没有&那么会被
编译器把p(数组名字)自动转化为指向数组首元素的指针。最内层引用与否要看需不需要改变数组内容
for(int &q:p){
cout<<q<<' ';
}
cout<<endl;
}
注:这些代码中的类型可以用auto来进行自动推断