0

请考虑以下代码示例:

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

我正在尝试将函数 1 的输出作为函数 2 的输入发送,但到目前为止还没有成功。

如果有人可以用一个例子解释一下,那就太好了。此外,传递值和传递引用是否相同?

4

4 回答 4

3

简单点怎么样

int x = func2(func1(1,2));
于 2013-04-16T10:42:59.987 回答
2
int a = func2(func1(7, 9));

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

于 2013-04-16T10:43:08.570 回答
2

您可以通过嵌套函数来做到这一点:

func2( func1(42, 24) );

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

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

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

于 2013-04-16T10:46:29.740 回答
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
于 2013-04-16T11:56:54.293 回答