请考虑以下代码示例:
int func1(int,int); // function 1 prototype
int func2(int); // function 2 prototype
我正在尝试将函数-1的输出作为函数-2的输入发送,但直到现在都没有成功。
如果有人可以用一个例子来解释相同的话,那就太好了。 此外,就Pass-by值和Pass-by-reference而言是否可能相同?
答案 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