0
我有一个任务来获取用户的命令行参数 - 用户输入两个int来定义动态数组的行和列。然后数组填充随机数。我似乎无法创建数组,因为无论我尝试什么,都会收到无效的转换错误。任何人都可以澄清我在这里的误解吗?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数组的重要事情。有小费吗?
+1注:第一次以这种方式实现的'返回值randomArray'是毫无意义的。如果'randomArray()'实际上*分配了数组并且只将这两个维作为参数,那显然是必需的。 – WhozCraig
@WhozCraig谢谢,我没有检查该函数的实现需要当前签名。我现在在回答中已经注意到了这一点。 – simonc
感谢您的帮助。我仍然有一些问题得到它编译...我需要能够将此数组传递给randomArray函数,但我似乎无法得到它的工作。我创建了int *指针作为传递给函数的虚拟对象,但是一旦我实现了您的建议,现在我在初始化它时出现此错误:无法将参数'1'的'int *'转换为'int **' void randomArray(int **,int,int)'和使用它作为参数时出现此错误:error:无法将参数'1'的'int *'转换为'int **'为'void randomArray(int **, int,int)' – Megan