【问题标题】:2D array as function parameter in C++? [duplicate]二维数组作为C++中的函数参数? [复制]
【发布时间】:2018-01-27 04:36:32
【问题描述】:

我有一个程序,我想在矩阵 nxn 中仅在主对角线处填充零,而在其他任何地方填充 1。但是,我遇到了两个主要问题: 1)我不知道如何正确传递二维数组,以及如何调用函数。 2) 如果我在 main() 方法中编写所有代码(不包含函数),程序会编译但不能按预期工作 - 它会用 1 填充矩阵。

我想问我该如何解决这些问题?

#include <iostream>
#define MAX 100
using namespace std;
int a[MAX][MAX];
void fillMatrix(unsigned a[][MAX],unsigned n)
{
    for(int i=0; i<n; i++)
    {
        for(int j=0; j<n; j++)
        {
            if(i==j)
            {
                a[i][j]=0;
            }
            a[i][j]=1;
        }
    }
}



int n;
int main()
{
    cin>>n;
    fillMatrix(a[][n], n);


//Print the matrix
    for(int i=0; i<n; i++)
    {

        for(int j=0; j<n; j++)
        {
            cout<<a[i][j]<<' ';
        }
        cout<<endl;
    }
    return 0;
}

【问题讨论】:

  • 你需要一个 else,在你的 if (i==j) 或 move a[i][j]=1; 之后在 if 语句之上。
  • 具有相同名称的全局/局部变量?非常糟糕的主意。

标签: c++ arrays function multidimensional-array


【解决方案1】:

但是,我遇到了两个主要问题:1)我不知道如何正确传递二维数组,以及如何调用函数。

为了传递任何数组(1D、2D 或 3D),您需要使用以下调用

fillMatrix(a, n);

如果我在 main() 方法中编写所有代码(不包含函数),则程序 > 编译但不能按预期工作 - 它会用 1 填充矩阵。

您没有在 if 代码块之后使用 else,这将覆盖 0 上的 1

       if(i==j)
        {
            a[i][j]=0;
        }
        else
        a[i][j]=1;

编辑:删除了一些文本,因为这是特定于 C 的,并且针对 c++ 提出了问题。

【讨论】:

  • 该问题的标签为c++。此外,C(自标准 C99 起)中的数组可以具有可变大小。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-12-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-08
  • 1970-01-01
  • 2023-03-14
相关资源
最近更新 更多