int数组的转换错误无效

时间:2013-11-15 18:14:30

标签: c++ arrays

我有一个从用户那里获取命令行参数的赋值 - 用户输入两个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 个答案:

答案 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;