题目:用指针方式代替数组下标方式,改写函数day_of_year和month_day。
自我解答:
day_of_year和month_day的原型如下:
int day_of_year(int year, int month, int day)
{
int i, leap;
leap = year % 4 == 0 && year % 100 != 0 || year % 400 == 0;
for(i = 1; i < month; i++)
day += daytab[leap][i];
return day;
}
void month_day(int year, int yearday, int *pmonth, int *pday)
{
int i, leap;
leap = year % 4 == 0 && year % 100 != 0 || year % 400 == 0;
for(i = 1; yearday > daytab[leap][i]; i++)
yearday -= daytab[leap][i];
*pmonth = i;
*pday = yearday;
}
用指针替代数组访问,指的就是用指针代替二维数组daytab的访问。
一种方式是定义char *p指针,用于指向daydtab[leap][1]的地址,然后在后面的循环中用*p++来依次取得数组的元素。例day_of_year改写如下:
int day_of_year(int year, int month, int day)
{
int i, le