网站首页 > 文章中心 > 其它

c语言返回数组大小函数

作者:小编 更新时间:2023-08-16 17:36:48 浏览量:266人看过

在C语言中如何使函数返回数组

c语言中函数能返回一个数组吗

不能直接返回一个数组,但是可以用其他方式实现类似功能.

方法1:利用全局变量

分析:全局变量作为C语言的一个知识点,虽然我们都了解它的特点,但在实际教学过程中应用得并不是很多.由于全局变量的作用域是从定义变量开始直到程序结束,而对于编写有多个返回值的C语言函数,我们可以考虑把要返回的多个值定义成全局变量.当函数被调用时,全局变量被更改,我们再把更改后的全局变量值应用于主调函数中.函数被调用后被更改后的全局变量值即为函数的数个返回值.下面以一个实例演示该方法的应用.

c语言返回数组大小函数-图1

#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]);

注意:该方法适用于多个返回值的数据类型一致的情况.当返回值数据类型不一致时,不适用该方法

C语言只用一个函数返回数组中最大值,最小值,平均值

你的参数传递有误,要把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);

C语言调用数组返回数组怎么做?

#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语言返回数组大小函数相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!

版权声明:倡导尊重与保护知识产权。未经许可,任何人不得复制、转载、或以其他方式使用本站《原创》内容,违者将追究其法律责任。本站文章内容,部分图片来源于网络,如有侵权,请联系我们修改或者删除处理。

编辑推荐

热门文章