注册 登录
编程论坛 C++教室

请帮忙看一下 为什么无法得出结果

商烟渺 发布于 2016-11-28 13:47, 1837 次点击
//file name:Julian.cpp
//Calendar conversion
#include <iostream>
using namespace std;
char *Julian(int year,int day);
int main()
{int day,year;
cout<<"请输入年份:"<<endl;
cin>>year;
cout<<"请输入天数:"<<endl;
cin>>day;
Julian(year,day);
return 0;
}
char *Julian(int year,int day)
{char*date=new char[7];
char *month[12]={"Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"};
int i;
int dayin[12]={31,28,31,30,31,30,31,31,30,31,30,31};
if((year%4==0&&year%100!=0)||(year%400==0)) ++dayin[1];
for(i=0;day<dayin[i];++i){day-=dayin[i];
strcpy(date,month[i]);}
date[3]=' ';
if(day>9){ date[4]=day/10+'0';
date[5]=day%10+'0';
date[6]='\0';
}
else {date[4]=day+'0';
date[5]='\0';
}
return date;
}
程序如上 但却没有办法返回一个值,就直接结束了
麻烦大神们看一下该怎么改

5 回复
#2
xufan2016-11-28 18:39
cout << Julian(year,day) << endl;
#3
夏天的飞鸟2016-11-28 19:51
你返回的是指针: 要输出数组的话
int * p = Julian(year, day);
for(int i = 0, i < 7, i++)
{
    cout << p[i] << " ";
}
cout << endl;
#4
yangwawa2016-11-28 23:28
回复 2楼 xufan
你这个应该不行吧,返回的时候那个数组已经被释放了吧。。。。
#5
夏天的飞鸟2016-11-28 23:36
回复 4楼 yangwawa
你没有delete就不会被释放,因为是new的,而且他还忘记在main里面delete了,程序大的话内存泄漏。
#6
yangfrancis2016-11-29 13:55
回复 楼主 商烟渺
最好把你希望返回的指针改成一个实参。函数不要返回值。执行完毕之后再在函数外访问该实参,看是否完成了修改
1