传递数组时从 'int' 到 'int\*' \[-fpermissive\] 的无效转换

新手上路,请多包涵

我是 C++ 语言的新手,我不知道指针及其用法。我在在线编译时遇到错误 "[Error] invalid conversion from 'int' to 'int*' [-fpermissive]"

 cout << midd (ax [10], asize) << endl;

这是代码:

 #include <iostream>

using namespace std;
double midd(int arr[10], int size);

int main() {
    int ax[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
    int asize = 10;
    cout << midd(ax[10], asize) << endl;
}

double midd(int arr[10], int size) {
    int acount = 0;
    int mid1;
    int mid2;
    int amid = size / 2;

    double mid = 0.0;

    while (acount < 10) {
        if (acount == amid) {
            mid1 = arr[acount];
        }
        else if (acount == (mid + 1)) {
            mid2 = arr[acount];
        }
        ++acount;
    }
    mid = (mid1 + mid2) / 2.0;
    return mid;
}

原文由 drainzerrr 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 3.3k
2 个回答

这里 midd(int arr[10],int size); 期待 int* 并且您正在尝试传递 int 值( ax[10] 这也是错误:ax 只有 10 个元素,您尝试使用第 11 个),编译器无法转换 intint* 所以它显示“[错误]从’int’到’int*‘的无效转换[-fpermissive]”。

要使该程序正确,您必须进行此更改。

  • cout<< midd (ax[10], asize ); 替换为 cout<< midd (ax, asize );

- 现在 ax ( int* ) 的指针被传递,所以 midd() 将接受它。

原文由 Piyush Sonani 发布,翻译遵循 CC BY-SA 3.0 许可协议

您需要将指针传递给数组的第一个元素。将 midd (ax [10], asize ) 更改为 midd (ax, asize )

在函数签名中

double midd(int arr[10],int size);

参数 int arr[10] 相当于 int *arr

 double midd(int *arr,int size);

因此, midd 期望其第一个参数类型为 int * 。在函数调用中 midd (ax, asize )ax 将衰减到 int *

原文由 haccks 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题