C Pointer and Array
- C 语言中只有一维数组,而且数组的大小必须在编译期就作为一个常数定下来。然而,C语言中的数组元素可以是任何类型的对象,当然也可以是另外一个数组。这样,要“仿真”出一个多维数组就不是什么难事。
- 对于一个数组,我们只能够做两件事:确定数组的大小,以及获得指向该数组下标为0的元素的指针。至于其他有关数组的操作,哪怕咋一看是以数组下标进行运算的,实际上都是通过指针进行的。换句话说,任何一个数组下标运算都等同于一个对应的指针运算,因此我们完全可以依据指针行为定义数组下标的行为。
int calendar[12][31];
int *p;
p = calendar[4];// calendar第四个元素为数组,p指向该数组下标为0的元素
p = calendar;//非法,calendar为指向数组的指针,而p为指向整型数的指针
int (*ap)[31];//ap指向一个含31个int元素的数组
ap = calendar;