读书人

请问关于指针数组的有关问题

发布时间: 2012-08-22 09:50:34 作者: rapoo

请教关于指针数组的问题
书上关于日期转成天数的问题

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"是一个字符串,在内存中是连续存储的,故指针可以找到。

读书人网 >C语言

热点推荐