永发信息网

调用函数sumetc(a);时出错:cannot convert parameter 1 from 'int [6][6]' to 'int ** ' 为什么???

答案:3  悬赏:80  手机版
解决时间 2021-03-26 11:55
  • 提问者网友:我们很暧昧
  • 2021-03-25 14:33
调用函数sumetc(a);时出错:cannot convert parameter 1 from 'int [6][6]' to 'int ** ' 为什么???
最佳答案
  • 五星知识达人网友:妄饮晩冬酒
  • 2021-03-25 15:31
首先变量a和指针运算符*结合,表明这是一个指针,然后再和第二个*结合表明这个指针指向的是一个指针的地址。因此应将一个指针的地址赋给变量a才是正确的,比如
int b=1; int *p=&b; int **a=&p;
再如
int *&a; 分析:首先变量a与&运算符结合,表明变量a是一个引用,然后再与*指针运算符结合,表明这个引用引用的是一个指针,因此应将一个指针赋给变量a,比如
int b=1; int *p=&b; int *&a=p;
所以int sumetc(int **a) 中 **a应该是一个整形变量,而你在函数内部却将其当做一个2维数组使用“sum2+=a[i][j];”,所以程序编译的时候才会出现:cannot convert parameter 1 from 'int [6][6]' to 'int ** ' 的错误提示。即不能转换2维整形数组到整形变量。
建议将函数定义修改成:int sumetc(int a[6][6])
全部回答
  • 1楼网友:妄饮晩冬酒
  • 2021-03-25 16:42
要么你把这句:int sumetc(int **a)
改成下面的形式: int sumetc(int a[][6]);
要么你把代码发上来.
不管怎么样,你的函数头还是有问题的.
你先按上面 改下试试..
  • 2楼网友:等灯
  • 2021-03-25 15:50
你的sumetc函数第一个参数类型给错了呗!
1、int sumetc(int **a) 改成a[6][6].
2、还有一种方法就是,将你的数组名字作为指针传给 sumetc((int **)数组名),(int**)进行强制转换。但是这个是不安全的。可能运行如常但是结果可能有偏差。仔细查看一下。最好用第一个,如果出现程序问题就是第一就是改程序设计(class
设计)第二个就考虑改数据结构。
好运。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯