如何将结果从一个函数传递到另一个函数?

时间:2013-04-16 10:41:44

标签: c function

请考虑以下代码示例:

int func1(int,int); // function 1 prototype
int func2(int); // function 2 prototype

我正在尝试将函数-1的输出作为函数-2的输入发送,但直到现在都没有成功。

如果有人可以用一个例子来解释相同的话,那就太好了。 此外,就Pass-by值和Pass-by-reference而言是否可能相同?

4 个答案:

答案 0 :(得分:3)

如何简单地

int x = func2(func1(1,2));

答案 1 :(得分:2)

int a = func2(func1(7, 9));

只需将包含func1调用的表达式作为参数传递给func2

答案 2 :(得分:2)

您可以通过嵌套函数来完成此操作:

func2( func1(42, 24) );

嵌套大量函数很容易变得难以阅读,因此为了更具可读性,您可以将func1的返回值存储在临时变量中:

int tmp = func1(42, 24);
func2(tmp);

关于pass-by-reference与pass-by-value的问题:在所有这些函数调用中,参数都是按值传递的。那是因为函数签名将参数定义为int,而不是int *

答案 3 :(得分:1)

正如其他答案所说:func2( func1(1, 2) );

在C中,您只能按值传递参数。现在说,传递指向要更改的内存的指针的值实现与通过引用传递相同的效果。

int foo(int *x){
   printf("The address that you passed to the function is: %x", x);
   printf("The value is: %d", *x);
   *x = 10;
}
int mem;
foo(&mem); //print the address of mem

在C ++中,你可以通过引用传递。

int foo(int &x){
   printf("The address that you passed to the function is: %x", &x);
   printf("The value is: %d", x);
   x = 10;
}
int mem;
foo(mem); //print the address of mem