int *temp;/*用于交换位置*/
*temp=*ptr;
for(i=0;i{
if(*ptr*(ptr+i))/*最大值与第一个元素进行交换*/
{
k=i;
*temp=*ptr;
*ptr=*(ptr+k);
*(ptr+k)=*temp ;
}
if(*(ptr+n-1)*(ptr+i))/*最小值与最后一个元素进行交换*/
{
j=i;
*temp =*(ptr+n-1);
*(ptr+n-1)=*(ptr+j);
*(ptr+j)= *temp ;}
}
}
/*调用最大最小值函数*/
main()
{
int A[6],i;
for(i=0;i6;i++)
scanf("%d",A[i]);
max_min(A,6);
printf("max=%d, min=%d",A[0],A[5]);
getch();
}
调试结果如下:
请输入6个整形数,以空格隔开:
5 8 9 32 -6 4
max=32,min=-6
注意:该方法适用于多个返回值的数据类型一致的情况 。当返回值数据类型不一致时,不适用该方法 。
方法3:传递结构体指针
分析:结构体作为教学中的一个难点,教材对它介绍的内容并不多 , 应用的实例更是少之又少,所以学生对于结构体普遍掌握情况不理想 。其实,编写返回多个值的C语言函数 , 也可以考虑采用结构体的方式去实现 。通过方法2,我们知道如果返回的数个数值的数据类型不一致,可以通过定义全局变量实现有多个返回值的C语言函数,也可以考虑把要求返回的数个值定义成一个结构体,然后同样以传递结构体指针方式把结构体的指针传递给形参结构体指针,那么函数中对形参结构体的修改即是对实参结构体的修改,函数被调用后获取的实参结构体成员即为函数的多个返回值,下面以实例演示该方法的应用 。
实例3:编写一个用户自定义函数,允许用户录入学生的基本信息(包括学号、姓名、所属班级、总评成绩),并返回这些基本信息给主调函数 。
方法:把学生基本信息定义成一个结构体,在用户自定义函数中传递该结构体的指针 , 则自定义函数中对结构体成员的录入操作即是对实参结构体成员的录入操作,从而实现多个返回值 。参考代码如下:
#include "stdio.h"
#include "conio.h"
struct inf{/*定义学生结构体,分别包含成员学号、姓名、班别、总评成绩*/
char xh[12];
char name[20];
char class[15];
int chj;
};
main(void)
{
struct inf a1; /*定义学生结构体类型变量*/
void xxxx(struct inf *ptr);
printf("请输入学号,姓名,班别,总评成绩,以空格隔开: ") ;
xxxx(a1);/*调用函数 , 以学生结构体类型变量地址作为实参*/
printf("学号:%s,姓名: %s,班别:%s,总评成绩:%d",a1.xh, a1.name,a1.class,a1.chj);
getch();
}
void xxxx(struct inf *ptr)/*该函数实现对结构体成员数据的录入操作*/
{
char xh1[12],name1[20],class1[15];
int chj1;
scanf("%s%s%s%d",xh1,name1,class1,chj1);
strcpy(ptr-xh,xh1);
strcpy(ptr-name,name1);
strcpy(ptr-class,class1);
ptr-chj=chj1;
}
调试结果如下:
请输入学号,姓名,班别,总评成绩,以空格隔开:
200102LiLi200185
学号:200102,姓名: LiLi,班别:2001,总评成绩:85
注意:当函数要求返回的多个值是相互联系的或者返回的多个值数据类型不一致时可以采用该方法 。
总结
对于以上这三种方法 , 如果想要返回的数个值数据类型一致,可以考虑采用方法2;而对于不同数据类型的返回值,如果各个数值之间是相互联系的,则方法3较为合适;方法1虽然在很多情况下都可以实现多个返回值的C语言函数,但毕竟全局变量应用过程中有很多危险,要慎重使用 。
C语言中一个函数怎样返回多个值方法一:设置全局变量 , 这样你在形参中改变全局变量,在实参中也会有效 。所以你可以在形参中改变多个全局变量的值,那么在实参中就相当于返回多个值 。
推荐阅读
- 旧的电脑怎么安装路由器,旧电脑做路由器
- 云erp分配系统资源不够,云erp产品
- 全球十大射击游戏手游排名,十大射击手游戏排行榜
- ios外服有什么飞机游戏,苹果手机外服有什么好玩的游戏
- php表数据分页显示控件 php怎么分页显示
- 路由器怎么改地名密码,路由器怎么改地名密码视频
- 怎么设置u盘自动运行游戏,怎么设置u盘自动弹出
- udp服务器与tcp服务器,服务器端口tcp udp
- vb.net执行存储过程 dbvisualizer 执行存储过程