c语言函数返回多组数组 c语言 返回数组

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

C/C++不能直接返回一个数组。这是由于在C/C++中,数组不是一种类型,因此不能被直接返回。 在C/C++中,一般有两种方法来返回一个数组。 第一种方法: 返回一个指向数组的指针,例如char (*retArray)[10]声明了一个函数retArray,该函数可以返回指向具有10个char元素的数组例子如下:#include#includeint (*retArray())[10]{int (*a)[10];int i=0;/*动态开辟空间*/ a=calloc(10,sizeof(int));/*赋值*/for(i=0;i10;i++){(*a)[i]=i;}return a;}int main(){int (*b)[10]; /*函数返回指向数组的指针*/ b=retArray(); /*打印第一个元素*/ printf("%d/n",(*b)[0]); /*释放空间*/free(b);return 0;}第二种方法: 如果你不喜欢用指针的形式返回数组,那么可以采用返回一个结构的形式。这种形式相对较安全,可以避免忘记释放指针而造成内存泄露,也可以避免访问悬挂指针造成的错误。但缺点是由于结构是先拷贝再返回,因此如果结构较大时,会影响效率和占用较大内存。 例子如下:#includestruct tag{int a[10];}x,y;struct tag retArray(){int i=0;for(i=0;i10;i++) x.a[i]=i;return x;}int main(){struct tag y=retArray(); printf("%d/n",y.a[3]);return 0;}注意:(1)在返回指针时要切记要避免内存泄露和访问悬挂指针。 (2)很多人认为指针和数组等价的,这是错误的。int (*a)[10]和int b[10]两者是不能直接用a=b来赋值的。在数组和指针作为函数参数传递时,二者可以认为等价,这是因为数组会被转化为指针来传递。 (3)返回多维数组方法类似。

于2013年开始创新互联专注于”帮助中小企业+互联网”, 也是目前成都地区具有实力的互联网服务商。团队致力于为企业提供--站式网站建设、移动端应用( H5手机营销、app软件定制开发、微信开发)、软件开发、信息化解决方案等服务。

c语言函数返回数组

你好!

将函数采用指针的形式返回平均值

注意看后面的注释

#includestdio.h

int main()

{

float *student_aver(float array[3][3]);   // 改成指针的形式输出 

float score[3][3];

float *a;

int i,j;

printf("请输入学生各科的成绩:");

for(i=0;i3;i++)

for(j=0;j3;j++)

scanf("%f",score[i][j]);

printf("每个学生的平均成绩分别为:");

a=student_aver(score);                // 指针 a 接收函数的返回值 

for(i=0;i3;i++)                      // 打印出平均值 

printf("%.2f ",a[i]);

return 0;

}

float *student_aver(float array[3][3])    // 改成指针的形式输出

{

int i,j;

float sum,a[3];

for(i=0;i3;i++)

{

sum=0;

for(j=0;j3;j++)

sum=sum+array[i][j];

a[i]=sum/3;

   }

return a;                             // 输出数组 a 

}

c语言函数如何返回多个值

c语言函数只能最多有一个返回值。我们以一个数据运算函数作为实例讲解:

使用指针返回额外数据:定义指针参数,将结果通过指针返回。

如果有很多类型相同的数据,如何返回数组呢?c语言也只能借助指针返回数组。

使用结构体返回:如果返回多个数据,并且各个数据类型都不相同。那么只能通过结构体返回。

使用结构体指针返回:直接返回结构体,程序执行效率会受到影响。因为需要复制结构体数据,如果结构体数据比较大,复制操作会损耗程序性能。

通过使用结构体指针,我们也可以返回多个数据结果。

在c++中,除了使用指针,通常使用引用返回多个数据。与指针相比,使用引用时不用担心函数调用者传入不符合预期的指针。


标题名称:c语言函数返回多组数组 c语言 返回数组
文章转载:http://scyanting.com/article/hphisp.html