# 指针与多维数组

下面两种定义方式中， `a[10][20]` 是一个真正的二维数组，它分配了 200 个整型长度的存储空间，并且通过常规的矩阵下标计算公式得到具体元素的位置。但是对于 `b[10]` 来说，该定义仅仅分配了 10 个指针，假定 `b[10]` 的每个元素都指向一个具有 20 个元素的数组，那么编译器就要为它分配 200 个整型长度的存储空间以及 10 个指针的存储空间。

```c
#include <stdio.h>

int main(int argc, char const *argv[])
{
    int a[10][20];
    int *b[10];
    return 0;
}
```

指针数组最频繁的用处是存放具有不同长度的字符串。

