请考虑以下代码示例:
int func1(int,int); // function 1 prototype
int func2(int); // function 2 prototype
我正在尝试将函数 1 的输出作为函数 2 的输入发送,但到目前为止还没有成功。
如果有人可以用一个例子解释一下,那就太好了。此外,传递值和传递引用是否相同?
简单点怎么样
int x = func2(func1(1,2));
int a = func2(func1(7, 9));
只需将包含调用的表达式func1
作为参数传递给func2
.
您可以通过嵌套函数来做到这一点:
func2( func1(42, 24) );
嵌套大量函数很容易变得难以阅读,因此为了提高可读性,您可以将 func1 的返回值存储在一个临时变量中:
int tmp = func1(42, 24);
func2(tmp);
关于您关于按引用传递与按值传递的问题:在所有这些函数调用中,参数都是按值传递的。这是因为函数签名将参数定义为int
,而不是int *
正如其他答案所说: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