c-函数错误:double[]到double



我的作业有问题。我花了最后一个小时试图弄清楚。我个人没有发现任何语法错误。

这是错误

错误1错误C2440:"函数":无法从"double[49]"转换为"double"

这是它所指的行:

std_report(student_id, upexp_m, upexp_y, upinc_m, upinc_y, num);

带有声明:

int student_id[MAX];
double upexp_m[MAX], upexp_y[MAX], upinc_m[MAX], upinc_y[MAX];
void std_report(int student_id[], double exp_m[], double exp_[], double income_m, double income_y, int size);

以及实现:

void std_report(int student_id[], double exp_m[], double exp_y[], double income_m[], double income_y[], int size) {
  printf("nn<STUDENT NAME> Budget Report (Student ID:%dn", student_id[size]);
  printf("~~~~~~~~~~~~~~~~~~~~~n");
  printf("Expensesn~~~~~~~~nn");
  printf("%45c MONTHLY %6c ANNUALLYn", ' ', ' ');
  printf("Total Expenses: %28c $ %.2lf %5c $ %.2lfn", ' ', exp_m[size], ' ', exp_y[size]);
  printf("Total Income: %30c $ %.2lf %5c $ %.2lfn", ' ',income_m[size], ' ',income_y[size]);
  printf("Total Savings Available for your goals: %4c $ %.2lf %6c $ %.2lfnnn", ' ', income_m[size]-exp_m[size], ' ', income_y[size]-exp_y[size]);
  return;
}

如果还有什么我可以粘贴的,请告诉我,我完全被难住了。如有任何帮助,我们将不胜感激。

解决方案

原型中缺少[]

一种分析方法:查看错误,它清楚地表明编译器正试图将doubles(double[49])数组转换为一个普通的double

如果我们查看您的std_report函数,您使用的是带有数组下标的所有相关变量,因此错误不可能存在,您的编译器还指示错误发生在您调用std_report的行。由于作为参数传递的变量具有正确的类型,因此编译器必须假设其中一个参数具有不同的类型。

因此,我们必须检查与编译器通信的std_report所需参数列表的所有点,即实现和所有声明

最新更新