C语言 return多值的解决方案

来源:互联网 发布:java c base64 编辑:程序博客网 时间:2024/05/16 17:49
/*
 *@ LZY
 * 方法一:指针
 */
# include <stdio.h>


void fun(int a,int b,int *c,int *d)
{
*c = a + b;  //* 解析地址
*d = a - b;
}


void main()
{
int a = 5;
int b = 2;
int c,d;

fun(a,b,&c,&d);

printf("a=%d,b=%d,c=%d,d=%d\n",a,b,c,d);

}

VC++6.0 运行结果:



小注://传值,实际上传的是实参的一个副本,且实参与存放该副本的地址在不同的内存空间,故传值改变的只是副本的值。而传址则不同,虽说传的也是地址副本,但无论是实参地址还是形参地址指向的都是实参,因此可以通过此方法来解决传值失效问题。



/*
 *@ LZY
 * 方法二:引用
 */

# include <stdio.h>


void f(int a,int b, int &c, int &d)
{
     c = a + b;
     d = a - b;
 }


main()
{
     int a = 5;
     int b = 2;
     int c,d;
     f(a,b,c,d);
     printf("a=%d,b=%d,c=%d,d=%d\n",a,b,c,d);
}

VC++6.0 运行结果:



小注:// 引用时C++对C的重要扩充。引用的过程不产生拷贝,所以引用可以看成是一个实实在在的实参的,只不过是换了一个名字而已。

0 0
原创粉丝点击