如何在另一个函数中使用带参数的函数的返回值

时间:2017-06-02 00:15:33

标签: c++ function

所有这些函数都在int main()之外:

int func1(int x) {

    int v1 = 6 * x;
    return v1; // the input argument will be 2, so v1 = 12
}

int func2(){
    int v2 = func1() / 4; // It's suppose to be 12 / 4
    //I get "too few arguments in function call"
 }

我知道第二个函数里面的func1()缺乏参数,这就是"参数太少的原因"警告。我想知道的是如何在func1()内使用func2()的返回值作为变量的值。

像这样,使用没有参数的函数,可以正常工作:

     int sum() {

        int v1 = 10;
        int v2 = 4;
        int v3 = v1 + v2; // 10 + 4 = 14
        return v3; // v3 = 14
    }

    int sub() {

        int v4 = sum() - 7; // 14 - 7 = 7;
        return v4; // v4 = 7
 }

感谢。

编辑:对不起,当我说我理解警告的原因时,我以为自己已经说清楚了。我的错误。

我需要函数1中用户的输入是可变的。

因此,在main()中,当提示用户给出一个数字时,它将被传递给函数1.该参数不是固定的,而是可变的。

编辑2: 以下是主要背后的想法:

int main() {
    int x = 0;
    cin >> x;
    func1(x); // send user input to func1, then to func2
    int e = func2(); // return result of above to int e
    cout << e << "\n";


}

6 个答案:

答案 0 :(得分:4)

您收到此错误是因为您必须为函数提供所需的所有参数。你没有给函数赋一个参数,所以它不起作用。 sum()不接收任何参数,因此必须像这样调用

sum()

func1()接受一个参数,因此要么将其更改为不带参数的函数

int func1() {

    int v1 = 6 * 2;
    return v1; // the input argument will be 2, so v1 = 12
}

但它表明你没有考虑过你在做什么以及它有点无用

或在不改变功能的情况下将其称为

int v2 = func1(2) / 4;

EDIT
所以你可以改变func2来获得一个参数并将其传递给func1

int func2(int x){
    int v2 = func1(x) / 4;
 }

并在主要做这个

int x;
cin>>x;
func2(x);

你的func2()应该返回int,但你没有返回语句

答案 1 :(得分:2)

应该是:

int func2(){
    int v2 = func1(2) / 4; // It's suppose to be 12 / 4
    return v2;
}

无论何时调用函数,都必须传递所需的参数。

你得到“参数太少”,因为你没有传递适量的论据!

答案 2 :(得分:1)

编辑匿名

如果您需要将变量作为用户输入,请尝试以下操作:

int main() {
    int x = 0;
    cin >> x;
    int y = func1(x); // send user input to func1, then to func2
    int e = func2(y); // return result of above to int e
    cout << e << "\n";
}

然后你的功能应该是这样的:

int func1(int x) {
    int v1 = 6 * x;
    return v1; // the input argument will be 2, so v1 = 12
}

int func2(int x){
    int v2 = func1(x) / 4; // It's suppose to be 12 / 4
 }

答案 3 :(得分:1)

该函数需要一个参数,所以传递一个参数。

就这么简单。

答案 4 :(得分:0)

你可以澄清一下你的问题吗?从我的理解,你正在做你想要的正确。

double add_5(double x) {
    return x + 5;
}
double nested_method(double x) {
    double myVariable = add_5(x); //my variable = x + 5
    //other code//
    return myVariable;
}
int main() {
double myInput = 123;
    std::cout << nested_method(myInput) << std::endl; //output should = 128
}

如果一个方法要求'n'参数调用该方法,你必须给它每个'n'参数(适当类型)。

忽略重载/默认值等

答案 5 :(得分:0)

我可能误解了你的问题,但这对我有用:

$ cat test.c
#include <stdio.h>
#include <stdlib.h>

int func1(int x)
{
    int v1 = 6 * x;
    return v1; // the input argument will be 2, so v1 = 12
}

int func2(int x)
{
  int v2 = func1(x) / 4; // It's suppose to be 12 / 4
  return v2;
}

int main( int argc, char *argv[] )
{
  printf( "%i\n", func2( 2 ) );
  return 0;
}

$ gcc test.c

$ ./a.out
3