1.严格来说,c++没有多维数组,其实是数组的数组,例如a[3][4]是一个大小为3的数组,3个元素都是含有4个整数的数组
2.范围for的运用,注意除了最内层的循环外,所有循环外的控制变量必须是引用类型,如果要改变数组内元素,内层也需引用
int a[3][4] = { 1,2,3,4,5,6,7,8,9,10,11,12 };
for (auto &row : a) //外层
for (auto num : row) //内层
printf("%d\n", num);
原因:为了避免数组被自动转成指针。如果外层是引用类型,row代表的是三个元素(有四个整数的数组),如果外层不是引用类型,那么row将指向三个元素(数组)的首地址,是int*类型,这样内层就不合法了
for (auto row : a)
printf("%d\n", *row); //输出1 5 9