我有一个从用户那里获取命令行参数的赋值 - 用户输入两个int来定义动态数组的行和列。然后用随机数填充数组。我似乎无法创建数组,因为无论我尝试什么,我都会无法获得无效的转换错误。任何人都可以清理我在这里误解的内容吗?
我在下面的每行重现了相关的代码和错误消息:
int main(int argc, char* argv[]) {
/* Cut out code irrelevant to question that gets the arguments
to define columns and rows. This part works fine. */
int * array = new int[rows];
int i, j;
for (i = 0; i < rows; i++) {
array[i] = new int[columns]; // error: invalid conversion from ‘int*’ to ‘int’
}
int * pointer = array;
array = randomArray(pointer, rows, columns);
for (int i = 0; i < rows; i++) {
for (int j = 0; j < columns; j++) {
cout << array[i][j] + " " << endl; // error: invalid types ‘int[int]’ for array subscript
}
}
return 0;
}
int* randomArray(int array[], int rows, int columns) {
srand (time(0));
for (i = 0; i < rows; i++) {
for (j = 0; j < columns; j++) {
int random = rand() % 100;
array[i][j] = random; // error: invalid types ‘int[int]’ for array subscript
}
}
return array;
for (i = 0; i < rows; i++) {
delete[] array[rows];
}
delete[] array; // error: type ‘int’ argument given to ‘delete’, expected pointer
}
到目前为止,我已设法清除了大部分错误,但我似乎无法修复这些错误。我知道我遗漏了一些关于2D阵列的重要信息。有什么提示吗?
答案 0 :(得分:3)
您希望array
成为指向int
数组的指针数组
int * array = new int[rows];
应该是
int ** array = new int*[rows];
和
int* randomArray(int array[], int rows, int columns)
会变成
int** randomArray(int *array[], int rows, int columns)
或者,正如WhozCraig所指出的,
void randomArray(int *array[], int rows, int columns)
因为不需要返回值。
或者,如果它不违反您的作业限制,您可以使用std::vector
代替
std::vector<std::vector<int>> array;