函数的define:
若有两个变量x和y,对于x的每一个值,y都有唯一确定的值与它对应,则y与x有函数关系。一般用表示。其中x叫做自变量,y叫做因变量。
唯一的值?对啊,C语言函数中也是只能return 一个的而已,虽然你能写多个return 到C语言的函数中,可是见到第一个return 后,后面的操作都是不执行的。读者可以试试!!
那么,我们怎样从一个C语言函数中得到多个值呢?我们可以用些技术吧???
对的,真的可以!!!
①可以利用指针,指针里放着变量的地址,如果我们改变它的指向,不就可以改变它的值吗?就相当于【我搬家了,地址改变了】,就可以改变我的值啦!!
所以函数中我们可以传入多个指针来实现!!!
#include<stdio.h>
int i=6;
int main()
{
void fun(int **f3,int **f4);
int f1=7,f2=2;
int **f5,**f6;
f5=&f1;
f6=&f2;
printf("%d %d\n\n",*f5,*f6);
fun(&f5,&f6);
printf("%d %d",*f5,*f6);//改变后
system("pause");
}
void fun(int **f3,int **f4)
{
*f3=&i;
*f4=&i;
}
这样就可以改变了!!模拟实现了返回两个值
②、和①类似。只是这里是字符串指针,这里不多说了
③、大哥出来了。。这是最有用的方法。。。记得我们C语言的结构体不?它可以有更强大的功能!!!!
我们用的strut MyStruct定义一个结构体后,这里的struct MyStruct就是一个类型。。相当于int double float那些。。所以,,我们大胆用,,定义【结构体函数】
#include<stdio.h>
struct MyStruct
{
char name[20];
int number;
};
int main()
{
struct MyStruct fun();
struct MyStruct cp=fun();
printf("%s %d",cp.name,cp.number);
system("pause");
}
struct MyStruct fun()
{
struct MyStruct c;
strcpy(c.name,"name");
c.number=1564;
return (c);
}
这样就可以了!!
也可以指针思想!!传入结构体指针
#include<stdio.h>
struct MyStruct
{
char name[20];
int number;
};
int main()
{
struct MyStruct Liu;
void fun(struct MyStruct * cp);
fun(&Liu);
printf("%s %d",Liu.name,Liu.number);
system("pause");
}
void fun(struct MyStruct * cp)
{
strcpy(cp->name,"name");
cp->number=123456;
}
④、用全局变量,,(不推荐),但是有时候很好用的奥!!特别是记录函数调用了多少次!!Remember!!!
⑤、能粉楼主一个么??