这段输出多维数组的代码 不理解
- C/C++ code
#include <iostream>using namespace std;int main(){ int ia[3][4]={ {1,2,3,4}, {2,3,4,5}, {3,4,5,6} }; int (*p)[4]; for(p = ia; p != ia+3; ++p){ for(int *q = *p; q != *p + 4; ++q ){ cout << *q << endl; } } return 0;}我不理解 int (*p)[4]; 这一句指的是什么 书上说的多维数组是数组的数组我是理解的 还有不理解这两个for 这是c++ primer 4.36的习题
[解决办法]
int (*p)[4]
这是一个指针的数组。。也就是说这个数组里面装了4个int类型的指针,两个for是数组输出的。可以看看多维数组在内存中的分布就明白了。。。
[解决办法]
- C/C++ code
int (*p)[4];//p是指向一个含有四个元素的一位数组的指针 for(p = ia; p != ia+3; ++p){//p指向ia的第0,1,2行,一行一行的遍历 for(int *q = *p; q != *p + 4; ++q ){//q开始指向q指向的元素,也就是二维数组的第一 个,之后q指向每一行的第0,1,2,3个元素 cout << *q << endl; }