我正在尝试在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];
}