不能直接返回一个数组,但是可以用其他方式实现类似功能.
方法1:利用全局变量
分析:全局变量作为C语言的一个知识点,虽然我们都了解它的特点,但在实际教学过程中应用得并不是很多.由于全局变量的作用域是从定义变量开始直到程序结束,而对于编写有多个返回值的C语言函数,我们可以考虑把要返回的多个值定义成全局变量.当函数被调用时,全局变量被更改,我们再把更改后的全局变量值应用于主调函数中.函数被调用后被更改后的全局变量值即为函数的数个返回值.下面以一个实例演示该方法的应用.
#include "stdio.h"
#include "conio.h"
int max,min;/*定义两个全局变量用于保存函数返回值*/
void max_min(int a,int b,int c) /*定义求最大最小值的函数*/
{max=min=a; /*初始化最大最小值*/
if(max if(max if(minb)min=b;
if(minc)min=c;
}
main()
{int x,y,z;
scanf("%d,%d,%d",x,y,z);
max_min(x,y,z) ;/*调用求最大值与最小值的函数*/
printf("三个数中的最大值为:%d;最小值为:%d",max,min);/*输出最大值与最小值*/
getch();
调试结果如下:
注意:该方法虽然可以实现有多个返回值的函数,但由于全局变量不能保证值的正确性(因为其作用域是全局,所以程序范围内都可以修改它的值,如果出现错误将非常难以发现),并且全局变量增加了程序间模块的耦合,所以该方法要慎用.
分析:在教学过程中,我们知道C语言函数参数的传递方式有值传递与地址传递.当进行值传递时,主调函数把实参的值复制给形参,形参获得从主调函数传递过来的值运行函数.在值传递过程中被调函数参数值的更改不能导致实参值的更改.而如果是地址传递,由于传递过程中从实参传递过来的是地址,所以被调函数中形参值的更改会直接导致实参值的更改.所以呢,我们可以考虑把多个返回值作为数组元素定义成一个数组的形式,并使该数组的地址作为函数的形式参数,以传址方式传递数组参数.函数被调用后,形参数组元素改变导致实参改变,我们再从改变后的实参数组元素中获得函数的多个返回值.以下实例演示该方法的应用.
方法:以指针方式传递该一维数组的地址,然后把数组的最大值与数组的第一个元素交换,把数组的最小值与最后一个元素交换.函数被调用完毕后,实参数组中的第一元素为数组的最大值,实参数组中最后一个元素为数组的最小值,从而实现返回数组的最大值与最小值的功能.程序参考代码如下:
void max_min(int *ptr,int n) /*定义求数组最大值最小值的函数,传递数组指针*/
{int i,j,k;/*j保存最大值所在位置,k保存最小值所在位置*/
int *temp;/*用于交换位置*/
*temp=*ptr;
for(i=0;i{
if(*ptr*(ptr+i))/*最大值与第一个元素进行交换*/
{
k=i;
*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 ;}
/*调用最大最小值函数*/
scanf("%d",A[i]);
注意:该方法适用于多个返回值的数据类型一致的情况.当返回值数据类型不一致时,不适用该方法
你的参数传递有误,要把n和数组传进去.
#includestdio.h
void?three(int?*a,int?*b,float?*c,int?t[],int?n)
int?i;
for(i=0;in;i++)
if(t[i]*a)
*a=t[i];
if(t[i]*b)
*b=t[i];
*c+=t[i];
void?main()
float?ave=0;
printf("输入n位数字:");
scanf("%d",n);
printf("输入%d位数组:",n);
scanf("%d",a[i]);
three(max,min,ave,a,n);
printf("该数组的最大值,最小值,平均值分别为\n?%d?,?%d?,?%f?",max,min,ave/n);
#include stdio.h
#define MIN(x,y)
int * add_1();
int * p = add_1();
b[i] = *(p+i);
printf("%d",b[i]);
int * add_1()
return a;
扩展资料:
注意事项
第一段:该数组不能是返回函数的局部变量数组,因为局部变量数组在退出函数后会被释放.
可以是全局变量,静态局部变量,动态分配内存,以及从函数参数传过来的数组地址.
第二段:返回指针时,无法返回长度,所以需要其它方式传回数组长度,以下是几种常用的方法.
①.、约定固定长度.
有些时候需要子函数将一个数组返回出来,通常是两种方法,一种是靠指针,另一种是结构体.
例如指针:
char *test(char *tmp)
return tmp;
void main(void)
printf("%s",test("第一个测试例子\n"));
以上就是土嘎嘎小编为大家整理的c语言返回数组大小函数相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!