子函数中得出的两个变量如何被主函数调用(C语言)

假设子函数中通过公式得到两个变量值x,y,主函数中需要用到这两个值,该用什么方法调用?

需要从函数中返回多于1个变量值时,最常用、也较简单的办法是在主调函数中声明变量,把变量的地址传给被调函数,在被调函数中通过指针直接操作主调函数中的变量。如此题中在主调函数中声明x和y,把x和y的地址(指针)传给被调函数。举例如下:

//#include "stdafx.h"//If the vc++6.0, with this line.
#include "stdio.h"
void f(int *x,int *y){
    *x=10;
    *y=34;
}
int main(void){
    int x,y;
    f(&x,&y);
    printf("x = %d\ny = %d\n",x,y);
    return 0;
}

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2018-04-12
有两种常用的方法:
1.用一个结构体,返回一个结构体,包含xy两个变量
2.使用引用/指针
谢谢采纳追问

能给举个例子吗?谢谢!

追答

以求返回一个整数的平方和相反数为例吧
比如 typedef struct Value{int x;int y;}val;
val fun(int n)
{
val m;
m.x = n * n;//平方
m.y = -n; //相反数
return m;// 返回这个结构体
}

追问

大师,如果需要用到指针呢?上面那个程序有点不懂,可否用指针举个例子。万般感谢!

追答

指针的话,那就简单一些了。这时候可以不要返回值。这时候比如说,你有x,y两个数,要把x变为它的平方,y变为自己的相反数。
方法如下:
void fun(int *x,int *y)
{
int t;
t = (*x) * (*x);
*x = t;
t = -*y;
*y = t;//这里当然可以直接写,比如*y = -*y,但是不好看,所以就这么写了,x的同理
}
调用的时候
比如在main里面 x和y是int类型
fun(&x,&y);
谢谢采纳

追问

大师,可否这样,我现在在子函数中得出x,y了,也找你这种方法进行了指针调用,但主函数中用x,y时任然有错,可否给一个教完整的程序,包括子函数和主函数?万分感谢!!

追答

#include
void fun(int *x, int *y)
{
*x = 1;
*y = 2;
}
int main()
{
int a,b;
fun(&a,&b);
printf("%d\t%d\n",a,b);
return 0;
}

本回答被提问者和网友采纳
第2个回答  2012-05-25
fun(int *x,int*y)
{ *x=*x+1;*y=*y+1; }
int main()
{
int a,b;
fun(&a,&b);
}
第3个回答  2012-05-25
1楼正解~~~
相似回答