C++ "int *" 类型的实参与 "int **" 类型的形参不兼容

来源:2-12 二维数组作为参数

cn_five

2018-01-12 11:28:57

#include<iostream>
using namespace std;
//声明求数组最大值的函数
int sum(int *(a)[4], int len)
{
 int i, j, s = 0;
 for (i = 0; i < len; i++, a++)
 {
  for (j = 0; j < 4; j++)
  {
   s += *(*a + j);
  }
 }
 return s;
}
int main()
{
 //定义一维数组
 int num[3][4] = { 4,5,2,6,12,7,5,0,3,1,3,4 };
 //调用函数,输出返回值
 cout << "数组num的最大值为:" << sum(num, 3) << endl; //C++ "int *" 类型的实参与 "int **" 类型的形参不兼容
 system("pause");
 return 0;
}

请问老师这个问题怎么回事?

写回答

3回答

倚松听花语

2018-01-12

int sum(int *(a)[4], int len)

这里的参数设置错误,第一个参数是个数组指针,正确写法如下。

int sum(int (*a)[4], int len)

0
hn_five
h 非常感谢!应该是指针数组。
h018-01-12
共1条回复

倚松听花语

2018-01-12

(*a)[4]  这个是数组指针

*a[4]    这个是指针数组

1

cn_five

提问者

2018-01-12

嘿嘿,说错了。

0

0 学习 · 593 问题

查看课程