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