C++编译错误 求助

来源:百度知道 编辑:UC知道 时间:2024/07/07 18:44:23
#include <iostream>
using namespace std;
void InsertSort(int &sort[],int n)
{
int i,j;
for(i=2;i<=10;i++)
if(sort[i]<sort[i-1])
{
sort[0]=sort[i];
for(j=i-1;sort[0]<sort[j];--j)
sort[j+1]=sort[j];
sort[j+1]=sort[0];
}
}
void prin(int sort[],int n)
{
int i;
for(i=1;i<=n;i++)
cout<<sort[i]<<" ";
cout<<endl;
}
int main()
{
int sort1[11],a[3],i,j,k;
for(i=10;i>=1;--i)
sort1[i]=11-i;
a[3]={5,3,1};
InsertSort(sort1[11],10);
prin(sort1[11],10);
return 0;
}

E:\vc6.0\sort.cpp(3) : error C2234: '<Unknown>' : arrays of references are illegal
E:\vc6.0\sort.cpp(27) : error C2059: syntax error : '{'
E:\vc6.0\sort.cpp(27) : error C2143: syntax error : missing ';' before '{'
E:\vc6.

很遗憾的告诉你
C++的引用不能为数组

因为
引用只是某个变量的别名,所谓别名,和指针类型是不一样的:
指针类型也可以指向某个变量,但指针类型本身也是一个变量,而引用实际上不是一个变量。
更本质来说,可以理解为引用没有自身的地址,所以可以理解为不占用内存空间。因此,声明引用数组没有办法分配空间,因为根本就没有空间可以分配给引用。所以不能声明和定义引用数组。

所以你的 InsertSort函数第一个参数改为 int*类型就可以了

调试好了~看注释理解吧~

#include <iostream>
using namespace std;
void InsertSort(int sort[],int n)//数组名已经是一个指针了,达到了引用的效果,不能再引用了
{
int i,j;
for(i=2;i<=10;i++)
if(sort[i]<sort[i-1])
{
sort[0]=sort[i];
for(j=i-1;sort[0]<sort[j];--j)
sort[j+1]=sort[j];
sort[j+1]=sort[0];
}
}
void prin(int sort[],int n)
{
int i;
for(i=1;i<=n;i++)
cout<<sort[i]<<" ";
cout<<endl;
}
int main()
{
int sort1[11],a[3]={5,3,1},i,j,k;//初始化要在定义的时候做
for(i=10;i>=1;--i)
sort1[i]=11-i;
//a[3]={5,3,1}; 定义完了只能逐个赋值
InsertSort(sort1,10); //数