请教关于指针数组的问题
书上关于日期转成天数的问题
- C/C++ code
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 dayofyear(int year,int month,int day){ int leap,i; char *p; leap=year%4==0&&year%100!=0||year%400==0; p=daytab[leap]; for(i=0;i<month;i++){ day+=*p++; } return day;}int main(){ printf("%d\n",dayofyear(2012,8,1));}这样写是没有问题的,但是
- C/C++ code
char *daytab[]={{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 dayofyear(int year,int month,int day){ int leap,i; char *p; leap=year%4==0&&year%100!=0||year%400==0; p=daytab[leap]; for(i=0;i<month;i++){ day+=*p++; } return day;}int main(){ printf("%d\n",dayofyear(2012,8,1));}这样为什么不行呢,调试发现p=daytab[leap]的时候p的地址是0?
问题在哪里,求指点
[解决办法]
{'d','s','d'}这样是表示多个成员的char型,如果是三个变量的话,他们的地址会是连续吗?你要指针怎么取查找他们。
而"dsd"是一个字符串,在内存中是连续存储的,故指针可以找到。