【问题标题】:error in conversion of 2d array in C++ functions在 C++ 函数中转换二维数组时出错
【发布时间】:2021-01-30 09:16:15
【问题描述】:
#include<iostream>
using namespace std;

int add(int x[2][2], int y[2][2],int z[2][2]);

int main()
{
   int a[2][2], b[2][2];
   cout << "Enter two matrices to add them " << endl;
   for (int i = 0; i < 2; i++)
   {
       for (int j = 0; j < 2; j++)
       {
           cin >> a[i][j];
       }
   }
   cout << endl;
   for (int i = 0; i < 2; i++)
   {
       for (int j = 0; j < 2; j++)
       {
           cin >> b[i][j];
       }
   }
   for(int i=0;i<2;i++)
   {
     for(int j=0;j<2;j++)   
     {
        cout<<add(a[2][2],b[2][2])<<endl;
     }
   }

    return 0;
}

int add(int x[2][2], int y[2][2],int z[2][2])
{
    for (int i = 0; i < 2; i++)
    {
        for (int j = 0; j < 2; j++)
        {
            z[i][j] = x[i][j] + y[i][j];
        }
    }
    for (int i = 0; i < 2; i++)
    {
        for (int j = 0; j < 2; j++)
        {
            cout << z[i][j];
        }
        cout << endl;
    }

}


我想构建一个函数,从用户那里获取值,然后添加并在控制台屏幕上显示它们, 它可以很容易地完成,但我想做一个功能。我已经构建了上面显示的一个,但它没有执行 它向我显示了从 int 到 int 的无效转换的错误。

【问题讨论】:

  • 数组被称为ab,而不是a[2][2]b[2][2]add 也有 3 个参数。
  • 无关:让生活更轻松,在使用之前定义 add 函数并跳过原型。

标签: c++ arrays 2d


【解决方案1】:
cout<<add(a[2][2],b[2][2])<<endl;

应该是

cout<<add(a,b)<<endl;

这是一个很常见的误解。要引用数组,请使用数组的名称(即ab)而不是数组及其维度(即a[2][2]b[2][2])。声明时只需要数组的维度,使用时不需要。

另外(正如 fabian 指出的那样),你已经用三个参数编写了add,但你只用两个参数调用它。也许您打算像这样将z 本地化为add

int add(int x[2][2], int y[2][2])
{
    int z[2][2];
    ...

现在add只有两个参数。

【讨论】:

    猜你喜欢
    • 2012-03-08
    • 1970-01-01
    • 1970-01-01
    • 2022-01-04
    • 1970-01-01
    • 1970-01-01
    • 2011-06-10
    • 2021-11-23
    • 1970-01-01
    相关资源
    最近更新 更多