回 帖 发 新 帖 刷新版面

主题:出不来结果

#include <iostream.h>
void arraycreat(int *&A ,int n)
{A=new int [n];
cout<<"Enter "<<n<<"numbers:"<<endl;
for(int i=0;i<n;i++)
       cin>>A[n];}
void arraydisplay(int A[],int n)
{    for(int i=0;i<n;i++)
        cout<<A[i]<<'\t';
       cout<<endl;}
void main()
{int n;
int *A;
cout<<"输入要创建的数组元素个数:";
cin>>n;
arraydisplay(A,n);

}

回复列表 (共3个回复)

沙发

C++我不是 很清楚,如果把它理解为C语言的话,错误原因应该是 指针使用错误:
 int *A;这一句并没有给A分配空间,那么A的值是以前遗留下来的一个数。
arraydisplay(A,n);就把上面遗留下来的未知数通过函数传递给了arraydisplay函数中参数int A[],
然后cout<<A[i]<<'\t'这一句A[i]很显然要读取A 所指向的对象,而A的值是不能确定的,在绝大多数情况下(基本是100%)A指向了一个不能写(一般也是不能读)的空间,这样就造成了段异常等错误。

板凳


#include <iostream.h>
void arraycreat(int *&A ,int n)
{A=new int [n];
cout<<"Enter "<<n<<"numbers:"<<endl;
for(int i=0;i<n;i++)
cin>>A[i];}    //你的这里写错了
void arraydisplay(int A[],int n)
{    for(int i=0;i<n;i++)
cout<<A[i]<<'\t';
cout<<endl;}
void main()
{int n;
int *A;
cout<<"输入要创建的数组元素个数:";
cin>>n;
arraycreat(A,n);  //你没有这个语句,所以输出的东西就不确定了
arraydisplay(A,n);

}

3 楼

楼上正确

我来回复

您尚未登录,请登录后再回复。点此登录或注册