多维数组

当使用多维数组时,也会自动转换成一个指向数组第一个元素的指针

多维数组本质是一个数组的数组。这样,指针指向的是第一个内部数组(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

使用新标准,我们可以通过使用autodecltype避免写指向数组指针的类型。

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)
     ...