多维数组
当使用多维数组时,也会自动转换成一个指向数组第一个元素的指针。
多维数组本质是一个数组的数组。这样,指针指向的是第一个内部数组(inner array)。
int ia[3][4];
int (*p)[4] = ia; // p points to an array of four ints
p = &ia[2]; // p points to the last element in ia
使用新标准,我们可以通过使用auto
或decltype
避免写指向数组指针的类型。
for (auto p = ia; p != ia + 3; ++p)
for (auto q = *p; q != *p + 4; ++q)
cout << *q << ' ';
也可以使用begin(ia)
等来进一步简化。
对多维数组使用类型别名
对多维数组使用类型别名可以使其可读性更好。
using int_array = int[4]; // array of four int
typedef int int_array[4]; // 和上面等价
for (int_array *p = ia; p != ia + 3; ++p)
for (int *q = *p; q != *p + 4; ++q)
...