编译错误 - 数组下标的类型'char [int]'无效

时间:2015-11-26 05:40:13

标签: c++ multidimensional-array compiler-errors

我正在研究一个做矩阵数学的程序。幸运的是,代码逻辑不是给我错误的东西。

我使用以下代码输出存储在二维数组中的矩阵:

void ouputMatrix(char arr[], int matrixRows, int matrixColumns) {

for (int a=0; a<matrixRows; a++) {
    for (int i=0; i<matrixColumns; i++) {
        cout << arr[a][i] << " ";
    }
    cout << endl;   
}
cout << endl;
}

但是,当我尝试编译此代码时,我被告知:

“在函数中'void outputMatrix(char *,int,int)': [错误]数组下标的类型'char [int]'无效。

错误类型告诉我,我遗漏了一些关于c ++数组语法或类似内容的明显内容,但我无法弄明白。我做错了什么?

2 个答案:

答案 0 :(得分:1)

如果您尝试将1-D数组传递给这样的函数,那么它完美无缺,但是如果您尝试传递2-D数组,那么您需要使用其有效语法传递数组,不像1-D

即。 return_type function_name(dataType arrayName[100],int size)

如果你也可以将下标'[]'留作1-D数组的空白,

但对于二维数组,它将是

return_type function_name(dataType arrayName[100][100],int rowSize,int colSize)

但是你也可以将下标'[]'留空,但只有1st []和2nd必须包含一些值。 实际上,你在第二个下标中传递了什么值并不重要,但是必须有一些值,只需传递你的二维数组不会超过的值。

对于数组的更多维度,语法将继续这样。 希望这对你有用。

答案 1 :(得分:0)

问题在于我试图将多维数组传递给函数,但使用与1-d数组相同的语法。由于数组的大小为100(根据我的问题,你可以知道的事情,对不起......)正确的传递方式是:

void ouputMatrix(char arr[][100], int matrixRows, int matrixColumns);