C ++无法将参数1的'double'转换为'double *'到'void sort(double *,int)'错误

李圭

我是一名正在听c编程课程的学生,并且正在使用c ++进行“按引用调用”。我不知道如何确切地使用c ++,所以我使用c并将其保存到.cpp文件中。无论如何,我使用了一个对数组进行排序的函数,但是现在出现了一个错误。我应该怎么做才能解决这个错误?

#include <stdio.h>
#include <math.h>

double round(double value);
void sort(double a[],int cnt);
void swap(double& x,double& y);

int main()
{
    int i;
    double array[3];
    for(i=0;i<3;i++){
    scanf("%lf",&array[i]);
    }
    sort(array[3],3);
    printf("%d %d %d",ceil(array[0]),floor(array[2]),round(array[1]));
    return 0;
}

double round(double value)
{
    return floor(value+0.5);
}

void sort(double a[],int cnt)
{
    int i,j;
    for(i=0;i<cnt-1;i++){
        for(j=i+1;j<cnt;j++){
                if(a[i]<a[j]){
                    swap(a[i],a[j]);
                }
            }
        }
}

void swap(double& x,double& y)
{
    int imsi=x;
    x=y;
    y=imsi;
}
虚拟软件公司

您的sort(double a[], int cnt)函数将第一个参数作为参数double a[],它是指向double*数组第一个元素的指针的语法糖但是在main()您将其调用为

sort(array[3], 3); // you pass a double here, not a double*

在上面的调用中,您传递了数组的第4个元素array,即a double,而不是指针double*要将指针传递到数组的第一个元素,请使用以下命令替换上面的调用

sort(array, 3); // you now pass a double* (i.e. pointer to first element of the array)

编译器基本上是在告诉你什么地方出了问题:

错误:无法将参数'1'的'double'转换为'double *'到'void sort(double *,int)'sort(array [3],3);

它期望一个,double*但您传递一个double它尝试转换doubledouble*,但是这种转换是不可能的,因此会出现错误。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

无法将参数 '1' 的 'double' 转换为 'double (*)[5]' 到 'void one_set_avrg(double (*)[5])'

来自分类Dev

C ++将int转换为double

来自分类Dev

C ++将int转换为double

来自分类Dev

无法将void转换为double

来自分类Dev

错误:无法将“ <lambda(double)>”转换为“ double(*)(double)”

来自分类Dev

无法将类型'double'隐式转换为'int'。-错误

来自分类Dev

无法将类型'double'隐式转换为'int'。-错误

来自分类Dev

double [] []无法转换为int [] []

来自分类Dev

将double转换为int

来自分类Dev

将double转换为int

来自分类Dev

将Double转换为Int

来自分类Dev

错误:无法将参数“1”的“double*”转换为“double”,错误:数组下标的“double[double]”类型无效

来自分类Dev

将double转换为int错误-在RichTextBox上绘制行号

来自分类Dev

在C ++中将double *转换为int *

来自分类Dev

在C中将double转换为int

来自分类Dev

为什么C#将double转换为int?

来自分类Dev

C ++-如何正确将double转换为int

来自分类Dev

C ++ 2D向量-将int转换为double

来自分类Dev

在C#.net中将object {double [,]}转换为double [,]或int [,]

来自分类Dev

将MATLAB类型转换为从double到double

来自分类Dev

Haskell:将Double转换为Int

来自分类Dev

将int转换为float / double

来自分类Dev

将double转换为int时出错

来自分类Dev

将Double对象转换为int

来自分类Dev

将double转换为int数组

来自分类Dev

隐式将int转换为double

来自分类Dev

将变量从Double转换为Int

来自分类Dev

C#:错误-无法将类型'int'隐式转换为'System.Collections.Generic.IEnumerable <double>'

来自分类Dev

C:将argv [1]转换为double