我是一名正在听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
。它尝试转换double
为double*
,但是这种转换是不可能的,因此会出现错误。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句