如何将2D数组(矩阵)传递给函数?

McFloofenbork

这回到了基础,但是由于某些原因,Visual Studio一直给我一个错误。我的函数的参数有问题。

我究竟做错了什么?我输入了矩阵的尺寸(NxN),但是我必须缺少一些东西。

这些是它给我的错误,不仅使您感到困惑,而且使其更加澄清:

数组可能没有这种类型的元素(功能参数)

'matrix'缺少下标(功能参数)

'void print(const int,char [] [])':无法将参数2从'char [3] [3]'转换为'char [] []'(我在main中调用该函数)

// 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;
}
Xaxxon

铛声说:#1与x86-64 gcc(树干):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;
}

直播:https//godbolt.org/g/YWDgk5

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章