我有学校的功课来编写一个读取数组的C ++程序,然后通过另一个函数将值加上+5。
/******************************************************************************
Online C++ Compiler.
Code, Compile, Run and Debug C++ program online.
Write your code in this editor and press "Run" button to compile and execute it.
*******************************************************************************/
#include <iostream>
#include <iomanip>
using namespace std;
float subtotal (float[], int);
int main() {
int arraySize;
cout << "Enter array size: ";
cin >> arraySize;
float array[arraySize];
cout << "Enter an array size of " << arraySize << " : ";
for (int i=0; i<arraySize; i++){
cin >> array[i];
}
for (int i=0; i<arraySize; i++){
array [i] = subtotal (array[i], arraySize);
cout <<left<<setw(5)<< array [i];
}
return 0;
}
float subtotal (float array[], int arraySize){
float x = array[]+5;
return x;
}
我收到此错误:
main.cpp: In function 'int main()':
main.cpp:30:49: error: cannot convert 'float' to 'float*' for argument '1' to 'float subtotal(float*, int)'
array [i] = subtotal (array[i], arraySize);
^
我做错了什么?这个错误是什么意思?
编辑:所以我匹配减速度,现在我收到了这个错误:
main.cpp: In function 'int main()':
main.cpp:30:49: error: cannot convert 'float' to 'float*' for argument '1' to 'float subtotal(float*, int)'
array [i] = subtotal (array[i], arraySize);
^
main.cpp: In function 'float subtotal(float*, int)':
main.cpp:38:21: error: expected primary-expression before ']' token
float x = array[]+5;
答案 0 :(得分:2)
你有三个问题:第一个是技术上你的程序不是一个有效的C ++程序,因为它没有variable-length arrays(你的数组array
是)。如果你想要一个在运行时获得其大小的“数组”,你应该使用std::vector
。
现在有些编译器允许VLA作为语言的扩展,就像你的编译器似乎正在做的那样,这导致了第二个问题:你声明你的函数subtotal
想要一个数组作为第一个参数(或者更确切地说,是指向数组中第一个元素的指针)。您传递了数组的单个元素。
然后第三个问题是subtotal
函数的定义与你的声明不匹配,因为 do 将数组的单个元素作为参数。< / p>
第二和第三个问题的简单解决方案?正确声明该功能:
float subtotal(float element);
请注意,我删除了第二个参数,因为它不需要。