gpt4 book ai didi

c++ - int 数组的无效转换错误

转载 作者:行者123 更新时间:2023-11-28 00:38:28 26 4
gpt4 key购买 nike

我有一项任务是从用户那里获取命令行参数——用户输入两个整数来定义动态数组的行和列。然后用随机数填充数组。我似乎无法创建数组,因为无论我尝试什么,我都会收到无效的转换错误。谁能澄清我在这里的误解?

我在下面每行复制了相关代码和错误消息:

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
}

到目前为止,我已经设法清除了大部分错误,但我似乎无法修复最后这些错误。我知道我遗漏了一些关于二维数组的重要信息。有什么建议吗?

最佳答案

你希望 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;

关于c++ - int 数组的无效转换错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20007842/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com