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