这回到了基础,但是由于某些原因,Visual Studio一直给我一个错误。我的函数参数有问题。
我在做什么错?我输入了矩阵的尺寸(NxN),但我一定缺少一些东西。
这些是它给我带来的错误,不仅使您感到困惑,而且使他们更加困惑:
一个数组可能没有这种类型的元素(函数参数)
'matrix'缺少下标(函数参数)
'void print(const int,char [] [])':无法将参数2从'char [3] [3]'转换为'char [] []'(我在main中调用函数)< / p>
// Function that has problems
void print(const int size, char matrix[][]) {
for (int i = 0; i < size; i++) {
for (int j = 0; j < size; j++) {
cout << matrix[i][j];
}
cout << endl;
}
return;
}
// MAIN
int main() {
const int n = 3;
char matrix[n][n] = {'a', 'b', 'c',
'h', 'i', 'd',
'g', 'f', 'e'};
print(n, matrix); // Calling function here
return 0;
}
答案 0 :(得分:2)
clang说:#1 x86-64 gcc(trunk):2:42:错误:声明“矩阵”为多维数组时,除第一个-Godbolt.org/g/qgnHTy之外,所有维度的边界都必须有边界>
请记住,为了进行array2d [i] [j]查找,它必须能够以i * length + j的方式访问元素,但是编译器不知道矩阵的长度是因为您没有把它放在类型中。编译器不知道size参数是否相关。
#include <iostream>
using namespace std;
// Function that has problems
template<int size>
void print(char matrix[][size]) {
for (int i = 0; i < size; i++) {
for (int j = 0; j < size; j++) {
cout << matrix[i][j];
}
cout << endl;
}
return;
}
// MAIN
int main() {
constexpr int n = 3;
char matrix[n][n] = {'a', 'b', 'c',
'h', 'i', 'd',
'g', 'f', 'e'};
print<n>(matrix); // Calling function here
return 0;
}