首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

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

2012-08-22 
请教关于指针数组的问题书上关于日期转成天数的问题C/C++ codechar daytab[2][13]{{0, 31, 28, 31, 30, 3

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

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

热点排行