尝试创建一个2D数组,其大小仅在C 中的运行时才知道



我正在尝试在C 中创建一个2D数组,其大小仅在运行时才知道。

我尝试执行以下操作:

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);

但是,当我尝试一下时:

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

我在编译期间会出现以下错误:


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


如何分配harray的内存,以便可以使用索引[i] [j]访问和分配值?

我尝试关注 @Uri的答案,但该程序立即崩溃,我并不真正了解发生了什么。

编辑:

我决定使用以下

std::vector<std::vector<int>> HArray(num_rows, std::vector<int>(num_cols));
#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;
}

您可以在C 中创建一个从双指针开始的2D数组

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

相关内容

  • 没有找到相关文章

最新更新