FISHER666 发表于 2020-4-12 00:09:14

函数调用的问题

报错:第19行, cannot convert 'int (*)' to 'int*' for argument '1' to 'int sum_all(int*)'

题目要求:编写一个函数求4*4二维数组周边元素的和
*/
/*
分析:
要想获得周围一圈的数值和,可以通过把所有数组加总后减去中间的四个数字来间接解决;
*/

# include <iostream>
using namespace std;

// 声明
int sum_all(int arr[]);

// 主函数部分
int main()
{
        int arr = {{1,2,3,4},{1,2,3,4},{1,2,3,4},{1,2,3,4}};
        // 调用求和函数
        cout<<"求和结果为:"<<sum_all(arr)<<endl;
}

// 求和函数
int sum_all(int arr)
{
        int sum;
        int total = 0;
        int circle = 0;
        for (int i = 0; i < 4; i++)
        {
                for (int j = 0; j < 4; j++)
                {
                        total += arr;
                }
        }
        for (int i = 1; i <= 2; i++)
        {
                for (int j = 1; j <= 2; j++)
                {
                        circle += arr;
                }
        }
       
        sum = total - circle;
       
        return sum;
}

奇宝 发表于 2020-4-12 00:28:28


/*
分析:
要想获得周围一圈的数值和,可以通过把所有数组加总后减去中间的四个数字来间接解决;
*/

# include <iostream>
using namespace std;

// 声明
int sum_all(int (*arr));//函数不能传多维数组,应该传多维数组的指针

// 主函数部分
int main()
{
    int arr = { {1,2,3,4},{1,2,3,4},{1,2,3,4},{1,2,3,4} };
    // 调用求和函数
    cout << "求和结果为:" << sum_all(arr) << endl;
}

// 求和函数
int sum_all(int (*arr))//函数不能传多维数组,应该传多维数组的指针
{
    int sum;
    int total = 0;
    int circle = 0;
    for (int i = 0; i < 4; i++)
    {
      for (int j = 0; j < 4; j++)
      {
            total += arr;
      }
    }
    for (int i = 1; i <= 2; i++)
    {
      for (int j = 1; j <= 2; j++)
      {
            circle += arr;
      }
    }

    sum = total - circle;

    return sum;
}

chxchxkkk 发表于 2020-4-12 00:37:34

// 声明
int sum_all(int arr[]);
形参这儿不对,这个写法是一维数组了,你要传入的是二维数组,应该这样写
// 声明
int sum_all(int arr[]);

FISHER666 发表于 2020-4-12 00:41:08

非常感谢深夜回复,祝您生活愉快!

FISHER666 发表于 2020-4-12 00:41:39

chxchxkkk 发表于 2020-4-12 00:37
// 声明
int sum_all(int arr[]);
形参这儿不对,这个写法是一维数组了,你要传入的是二维数组,应该这 ...

谢谢,看来这一块得去钻研一下了
页: [1]
查看完整版本: 函数调用的问题