无法在函数 C++ 中打印二维数组

Posted

技术标签:

【中文标题】无法在函数 C++ 中打印二维数组【英文标题】:Cant print an 2d array in function c++ 【发布时间】:2020-11-29 11:10:25 【问题描述】:

打印isSymmetric函数有问题,不知道如何正确打印。我在 google 中找不到解决方案。

#include <iostream>
#include <iomanip>

using namespace std;

const int MAX = 100;

void transpose(int mat[MAX][MAX], int tr[][MAX], int N)

    for (int i = 0; i < N; i++)
        for (int j = 0; j < N; j++)
            tr[i][j] = mat[j][i];


bool isSymmetric(int mat[MAX][MAX], int N)

    int tr[MAX][MAX];
    transpose(mat, tr, N);
    for (int i = 0; i < N; i++)
        for (int j = 0; j < N; j++)
            if (mat[i][j] != tr[i][j])
                return false;
    return true;


void main() 
    int matrix_size;
    cout << "Enter rows and columns for quaratic matrix: ";
    cin >> matrix_size;
    //int* a = (int*)malloc(row * col * sizeof(int));
    const int col = 99, row = 99;
    int a[col][row];
    srand((unsigned)time(NULL));
    for (int i = 0; i < matrix_size; i++)
        for (int j = 0; j < matrix_size; j++)
            a[i][j] = 0 + rand() % (20 - 0 + 1);
    cout << endl;
    for (int i = 0; i < matrix_size; i++) 
        for (int j = 0; j < matrix_size; j++)
            cout << setw(4) << a[i][j];
        cout << endl;
    
    //if (isSymmetric(a, matrix_size)) has a problem
    if (isSymmetric(a, matrix_size))
        cout << "Yes";
    else
        cout << "No";

我收到以下错误,但我不知道它的说法是什么 错误(活动)E0167 类型“int ()[99U]”的参数与类型“int ()[100]”的参数不兼容

【问题讨论】:

void main() 不是main 的有效签名。 main必须声明为返回int。如果您的编译器没有抱怨,请使用现代编译器。 【参考方案1】:

您的函数在其参数中需要int mat[MAX][MAX],其中MAX 是100。您将它们传递给int a[col][row],其中rowcol 是99。这会产生这个问题,因为具有100 个元素的数组不是与 99 个元素的数组相同...

【讨论】:

以上是关于无法在函数 C++ 中打印二维数组的主要内容,如果未能解决你的问题,请参考以下文章

打印出二维字符串数组的函数[重复]

无法将二维字符数组传递给函数(C++)

C++中动态二维数组中的地址

C 语言二级指针作为输入 ( 二维数组 | 抽象业务函数 | 二维数组打印函数 | 二维数组排序函数 )

将二维双数组从 C# 传递到 C++ 函数

在 C++ 类中初始化二维数组