读书人

返回值为何是减1

发布时间: 2012-03-29 12:53:12 作者: rapoo

求助,返回值为何是减1?
int * GetDate(int wk,int dy);

main()
{
int wk,dy;
do
{
printf(Enter week(1-5)day(1-7)\n);
scanf(%d%d,&wk,&dy);
}
while(wk<1||wk>5||dy<1||dy>7);
printf(%d\n,*GetDate(wk,dy));
}

int * GetDate(int wk,int dy)
{
static int calendar[5][7]=
{
{1,2,3,4,5,6,7},
{8,9,10,11,12,13,14},
{15,16,17,18,19,20,21},
{22,23,24,25,26,27,28},
{29,30,31,-1}
};
return &calendar[wk-1][dy-1];

}
搞不懂最后这个返回值(return &calendar[wk-1][dy-1];)为何要减1


[解决办法]
因为数组是由0开始的!
[解决办法]
while(wk<1||wk>5||dy<1||dy>7);这里规定了wk的合法范围为1<=wk<=5,dy的合法范围为:1<=dy<=7;
而数组static int calendar[5][7];合法数组下标前者为0-4,后者为0-6,正好比输入的要小1,所以要减1啊。楼主再翻翻书。
[解决办法]

探讨
因为数组是由0开始的!

读书人网 >C++

热点推荐