《c程序设计语言》读书笔记-5.9-指针转换天数和日期
#include "stdio.h" #include "stdlib.h" #include "string.h" static char daytab[2][13] = { {0,31,28,31,30,31,30,31,31,30,31,30,31}, {0,31,29,31,30,31,30,31,31,30,31,30,31} }; int day_of_year(int year,int month,int day) { int leap; char *p; leap = ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0); p = daytab[leap]; while(--month) day += *++p; return day; } void month_day(int year,int yearday,int *pmonth,int *pday) { int leap; char *p; leap = ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0); p = daytab[leap]; while(yearday > *++p) yearday -= *p; *pmonth = p - *(daytab + leap); *pday = yearday; } int main() { int n; int month = 0,day = 0; int *pmonth = &month,*pday = &day; n = day_of_year(2014,11,14); printf("%d\n",n); month_day(2014,318,pmonth,pday); printf("%d %d",*pmonth,*pday); return 0; }
*(daytab + leap) 表示的是地址。基础不牢啊,还想了半天。