1. 指针和数组
指针可以指向各种数据类型的数据,通过指针可以对此类型结构的成员进行操作,如果一个指针指向一个数组,可以通过指针加减控制指向的数组位置,
数组名代表指向数组第一个元素的指针,可以采用 int a[20]; int *p = a; 的方法使得 p 指针指向 a 数组。
二维指针不推荐使用指针进行操作,下面的例子是一个正确可运行的例子:
int calendar[12][31];
int (*monthp)[31]; /* monthp 是一个指向具有 31 个子数组的二维数组指针*/
monthp = calendar;
对于以下清空 calendar 数组的代码:
int month;
for(month=0; month<12; month++){
int day;
for(day=0; day<31; day++)
calendar[month][day] = 0; /*等效于 *(*(calendar + month ) + day) = 0;*/
}
可以通过以下代码替换:
for(monthp = calendar; monthp < &calendar[12]; monthp++){
int *dayp;
for(dayp = *monthp; dayp<&(*monthp)[31]; dayp++)
*dayp = 0;
}