【问题标题】:Thread Breakpoint at an array assignment数组赋值处的线程断点
【发布时间】:2015-05-22 05:36:25
【问题描述】:

我试图根据您输入的值创建一个 (n x n) 大的数组,然后用随机整数填充该数组。各位大神能帮我解决两个问题吗?

  1. 任何大于 4 的 n 值都会在最后几行中显示“显示错误”,如果我显示如果它不是错误的情况下它会是什么值,那么它是相同的,并且像这样巨大的东西20019238394

  2. 为什么它一直创建相同的数字?不是生成新的随机数吗?

    #include <iostream>
    #include <string>
    #include <cmath>
    #include <cstdlib>
    #include <time.h>
    using namespace std;
    
    
    int arrayCreate(int);
    
    int main(int argc, const char * argv[]) {
    
    int n;
    cout << "enter how big your array is (n) , it will be shown as (n x   n)" << endl;
    
    cin >> n;
    cout << "------------------------------" << endl;
    
    arrayCreate(n);
    
    
    
    return 0;
    }
    
    int arrayCreate(int n){
    
        srand (time(NULL));
    
        int y=0, x=0;
        int original[x][y];
    //putting in random values
    
    
      for (int y=0; y< n; y++){
    
      for (int x=0; x< n; x++){
        int check = (rand() % 9 + 1);
            if (check < 10)
            original[x][y] = check;
            else
            cout << "error";
    }
    
    }
    //displaying those values
        for (y=0; y<n; y++){
        for (x=0; x<n; x++){
            if (original[x][y] < 10)
        cout << original[x][y] << " ";
            else
            cout << "error at display";
    }
    
    
        cout << "            y is " << y << endl;}
    
    
    
    
    return original[x][y];
    }
    

【问题讨论】:

    标签: c++ arrays random


    【解决方案1】:

    您正在声明大小为 [0][0] 的数组。你想要的是大小 [n][n]。

    因此,您正在写入未分配的内存。更正:

    int original[n][n];
    

    应该适合你。

    【讨论】:

      【解决方案2】:

      当创建一个新数组时,你应该在堆上分配它,所以它是:

      int** original = new int* [n]; // creates column
      for(int i=0; i<n; i++)
          original[i] = new int [n]; // creates rows
      

      那么当它不再需要时,必须释放内存

      for(int i=0; i<n; i++)
          delete original[i];
      
      delete original;
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-05-06
        • 2011-01-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-05-06
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多