林深鹿饮溪 2019-03-11 17:16 采纳率: 0%
浏览 1150

c++定义了一个动态数组但是报错???

总是提示访问路径出现冲突 研究了半天才知道是 数组的问题 请看到的大神
帮帮忙 谢谢
(vs平台上的)
图片说明

代码在下面
这是头文件部分

#include<iostream>
using namespace std;
class Array
{
private://私有数据成员:
    int *a;// 指向根据len动态申请的数组空间
    int len;// 有效数组元素的个数
public://公有成员函数 :
    Array(int b[], int length);// 构造函数, 使用数组b初始化a所指的动态数组, length初始化len
    Array(const Array &arr);// 拷贝构造函数,使用对象arr初始化新对象
    void sort();// 按题意对动态数组中的元素进行排序
    void print();// 输出a所指向的数组
    ~Array();// 析构函数, 释放动态数组空间
};

这是成员函数部分

#include"array.h"
using namespace std;

Array::Array(int b[], int length)// 构造函数, 使用数组b初始化a所指的动态数组, length初始化len
{
    int i;
    int *a = new int[length];
    len = length;
    for (i = 0; i<len; i++)
    {
        a[i]= b[i];
    }
}
Array::Array(const Array &arr)// 拷贝构造函数,使用对象arr初始化新对象
{
    int i;
    len = arr.len;
    int *a=new int[len];
    for (i = 0; i < len; i++)
    {
        a[i] = arr.a[i];
    }
}

void Array::sort()// 按题意对动态数组中的元素进行排序
{
    int i,j;
    int temp;
    for(i=0;i<len;i++)
    {
        for(j=i+1;j<len;j++)
       {
        if(a[i]<a[j])
            {
            temp = a[i];
            a[i] = a[j];
            a[j] = temp;
            }
        }
    }
}
void Array::print()// 输出a所指向的数组
{
    int i;
    for(i=0;i<len;i++)
    {
        cout<<a[i]<<endl;
    }
}
Array::~Array()// 析构函数, 释放动态数组空间
{
    delete []a;
}

这是主函数

#include"array.h"
using namespace std;

int main()
{
    int num;
    int i;
    int a[50];
    cout<<"输入数组的元素个数"<<endl;
    cin>>num;
    for(i=0;i<num;i++)
    {
        cin>>a[i];
    }
    Array text(a,num);
    text.sort();
    text.print ();
    system("pause");
    return 0;
}
  • 写回答

1条回答 默认 最新

  • SFAfreshman 2019-04-01 22:42
    关注

    for(i=0;i<len;i++)
    {
    for(j=i+1;j<len;j++)
    {
    if(a[i]<a[j])
    {
    temp = a[i];
    a[i] = a[j];
    a[j] = temp;
    }
    里面i=len-1时,j=i+1=len;
    但长度为len的数组下标范围为0~len-1;
    所以数组下标越界;内存出错,所以出错中断

    评论

报告相同问题?

悬赏问题

  • ¥15 求解 yolo算法问题
  • ¥15 虚拟机打包apk出现错误
  • ¥30 最小化遗憾贪心算法上界
  • ¥15 用visual studi code完成html页面
  • ¥15 聚类分析或者python进行数据分析
  • ¥15 三菱伺服电机按启动按钮有使能但不动作
  • ¥15 js,页面2返回页面1时定位进入的设备
  • ¥50 导入文件到网吧的电脑并且在重启之后不会被恢复
  • ¥15 (希望可以解决问题)ma和mb文件无法正常打开,打开后是空白,但是有正常内存占用,但可以在打开Maya应用程序后打开场景ma和mb格式。
  • ¥20 ML307A在使用AT命令连接EMQX平台的MQTT时被拒绝