尝试创建一个2D数组,其大小仅在运行时在c +中已知

时间:2016-12-01 21:09:07

标签: c++ arrays malloc

我正在尝试用c ++创建一个2D数组,其大小仅在运行时已知。

我尝试了以下操作:

int main()
{


int counter = 1;
while(counter<=50)
{ 

    TextColor(0, 15);
    int i = 0, j;
    while (i <= 5)
    {
        j = 1;
        while (j <= 28)
        {
            cout << " ";
            j++;
        }
        cout << endl;
        i++;
    }
    TextColor(15, 0);
    cout << endl << endl << endl;
    counter++;
}
system("pause");
return 0;
}

但是当我尝试这个时:

std::ifstream myFile;
myFile.open("input.txt",std::ios::in);
int num_cols;
myFile >> num_cols;
int num_rows = 10;

int *HArray;
HArray = (int*) malloc(sizeof(int)*num_cols*num_rows);

编译期间出现以下错误:

  

错误2错误C2109:下标需要数组或指针类型

如何为HArray分配内存,以便我可以使用indices [i] [j]来访问并为数组赋值?

我试着关注@ Uri的答案here,但程序立即崩溃了,而且我真的不明白发生了什么。

修改

我决定使用以下

for (int i = 0; i < num_rows; i++) {
    for(int j = 0; j < num_cols; j++) {
        HArray[i][j] = i*j + 34*j;
    }
}

2 个答案:

答案 0 :(得分:0)

#include <iostream>
#include <string>
#include <fstream>


int main()
{
    std::ifstream myFile;
    myFile.open("input.txt", std::ios::in);
    int num_cols;
    myFile >> num_cols;
    int num_rows = 10;


    int** HArray = new int*[num_rows];
    for (int i = 0; i < num_rows; ++i)
    {
        HArray[i] = new int[num_cols];
    }

    return 0;
}

答案 1 :(得分:-1)

您可以从双指针

开始在C ++中创建2D数组
int     **  matrix;  
matrix = new int * [num_cols];
for (int i = 0; i < num_cols; i++){
    matrix[i] = new int [num_rows];
}