另一个函数

时间:2018-04-21 07:53:58

标签: c++

我有学校的功课来编写一个读取数组的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;

1 个答案:

答案 0 :(得分:2)

你有三个问题:第一个是技术上你的程序不是一个有效的C ++程序,因为它没有variable-length arrays(你的数组array是)。如果你想要一个在运行时获得其大小的“数组”,你应该使用std::vector

现在有些编译器允许VLA作为语言的扩展,就像你的编译器似乎正在做的那样,这导致了第二个问题:你声明你的函数subtotal想要一个数组作为第一个参数(或者更确切地说,是指向数组中第一个元素的指针)。您传递了数组的单个元素

然后第三个问题是subtotal函数的定义与你的声明不匹配,因为 do 将数组的单个元素作为参数。< / p>

第二和第三个问题的简单解决方案?正确声明该功能:

float subtotal(float element);

请注意,我删除了第二个参数,因为它不需要。