不是这个错误,我去VC试了下,VC6.0编译器不像2005,应该是不支持临时对象的返回,我重新编译了一下在外部定义就可以了,vc6.0上测试通过

程序代码:
#include<iostream>
using namespace std;
const int n=10;
int* changeleft(const int a[],int b[],const int n);
void show(const int a[],const int n);
int b[n]={0};
void main()
{
int a[n]={1,2,3,4,5,6,7,8,9,10};
show(changeleft(a,b,n),n);
return;
}
int* changeleft(const int a[],int b[],const int n)
{
for(int i=0;i<n;i++)
{
b[i]=a[i];
}
for(int j=1;j<n;j++)
{
b[j-1]=a[j];
}
return b;
}
void show(const int a[],const int n)
{
for(int i=0;i<n;i++)
cout<<a[i];
cout<<endl;
}
如果你觉得这样做不符合题目要求,那么也可以直接这样

程序代码:
#include<iostream>
using namespace std;
const int n=10;
void changeleft(const int a[],const int n);
int b[n]={0};
void main()
{
int a[n]={1,2,3,4,5,6,7,8,9,10};
changeleft(a,n);
return;
}
void changeleft(const int a[],const int n)
{
int b[::n]={0};
for(int i=0;i<n;i++)
{
b[i]=a[i];
}
for(int j=1;j<n;j++)
{
b[j-1]=a[j];
}
for(int k=0;k<n;k++)
{
cout<<b[k];
}
cout<<endl;
}
//也可以将show函数定义到changeleft前面并在changeleft函数里面调用show函数,方法有很多,美女给个分儿
VC6.0对模扳的支持没2005好,所以编译我都喜欢用2005
[
本帖最后由 xg5699 于 2011-9-22 18:33 编辑 ]