学了指针,有个问题请教

killme2008 2003-09-12 06:31:12
#include<iostream.h>
int data[][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}};
void main()
{ int y,m,d,yd;
int *p,i,*j;
cout<<"Enter year month day:";
cin>>y>>m>>d;
p=data[0];
i=y%4==0&&y%1000!=0||y%400==0;
yd=d;
if(i)
p+=13;
j=p+m;
while(p<j)
{ yd+=*p;
p++;
}
cout<<yd<<endl;
}

刚学指针,有个程序不大懂,能不能有高手给我解释一下???
那个j代表什么我不大明白,能不能给我解释一下吗?????
谢谢.
刚学C++,请指点,大哥大姐们!!!
...全文
31 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
tstimes 2003-09-12
  • 打赏
  • 举报
回复
举个例子:闰年,2月。此时if(i),成立,进入if语句,p+=13使P指向data[1][0],j=p+m使j指向data[1][2],也就是2月
tianjieshui 2003-09-12
  • 打赏
  • 举报
回复
j的作用是使指针指向二维数组的第二层入口,{0,31,29,31,30,31,30,31,31,30,31,30,31}};
指向0的地址,为了计算闰年
TianGuangZao 2003-09-12
  • 打赏
  • 举报
回复
p=data[0]; 改成 p=&data[0] 或 p=data
原因:
data[0] 表示通过下标运算符[0],取第一个元素中的包含的值,
而 p 为指针,它包含的应该是某个元素地址, 所以我们还得额外用 & 取的 data[0] 的地址。
data 是数组名,可以看做一个指向数组首地址的指针,而你要取的恰好是首地址,所以 p = data 也是可以的。
如要取第 2 元素的地址:p = &data[1]
或 p = data + 1, 这里复杂一些,涉及到指针算术运算,得额外找资料看看。

i=y%4==0&&y%1000!=0||y%400==0;

表示判断是否是润年。
flinming 2003-09-12
  • 打赏
  • 举报
回复
up
tangcx 2003-09-12
  • 打赏
  • 举报
回复
j是代表 M+P(如果的平年p=0,否则是13)
然后让指针指向它
tangcx 2003-09-12
  • 打赏
  • 举报
回复
i=y%4==0&&y%1000!=0||y%400==0;
应该有问题

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧