c语言函数返回数组

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c语言函数返回数组相关的知识,希望对你有一定的参考价值。

#include<stdio.h>
int main()

float student_aver(float array[3][3]);
float score[3][3];
int i,j;
printf("请输入学生各科的成绩:");
for(i=0;i<3;i++)
for(j=0;j<3;j++)
scanf("%f",&score[i][j]);
printf("每个学生的平均成绩分别为:");
for(i=0;i<3;i++)
printf("%.2f ",student_aver(score));
return 0;

float student_aver(float array[3][3])

int i,j;
float sum,a[3];
for(i=0;i<3;i++)

sum=0;
for(j=0;j<3;j++)
sum=sum+array[i][j];
a[i]=sum/3;

return a[0];


将每个学生的平均分用函数求出,怎么返回

你好!

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

    

 注意看后面的注释

#include<stdio.h>
int main()

float *student_aver(float array[3][3]);   // 改成指针的形式输出 
float score[3][3];
float *a;
int i,j;
printf("请输入学生各科的成绩:");
for(i=0;i<3;i++)
for(j=0;j<3;j++)
scanf("%f",&score[i][j]);
printf("每个学生的平均成绩分别为:");

a=student_aver(score);                // 指针 a 接收函数的返回值 
for(i=0;i<3;i++)                      // 打印出平均值 
printf("%.2f ",a[i]);
return 0;

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

int i,j;
float sum,a[3];
for(i=0;i<3;i++)

sum=0;
for(j=0;j<3;j++)
sum=sum+array[i][j];
a[i]=sum/3;
   
return a;                             // 输出数组 a 

参考技术A

方法有不少,这里给出两种:

    把需要返回结果的数组作为一个参数传入,函数在运算过程中填写这个数组的各个项的值,函数执行完后这个数组中的内容就是需要的内容了,这是第一种做法。

    把需要返回的数组malloc出来,返回后再试用完成后再free

第一种

#include<stdio.h>
int main()

    void student_aver(float score[3][3], float averge[3]);
    float score[3][3];
    float average[3];
    int i,j;
    printf("请输入学生各科的成绩:");
    for(i=0;i<3;i++)
        for(j=0;j<3;j++)
            scanf("%f",&score[i][j]);
    printf("每个学生的平均成绩分别为:");
    student_aver(score, average);
    for(i=0;i<3;i++)
        printf("%.2f ",average[i]);
    return 0;

void student_aver(float score[3][3], float average[3])

    int i,j;
    float sum;
    for(i=0;i<3;i++)
    
        sum=0;
        for(j=0;j<3;j++)
            sum=sum+score[i][j];
        average[i]=sum/3;
   

第二种:

#include<stdio.h>
#include<stdlib.h>
int main()

    float* student_aver(float score[3][3]);
    float score[3][3];
    float *average;
    int i,j;
    printf("请输入学生各科的成绩:");
    for(i=0;i<3;i++)
        for(j=0;j<3;j++)
            scanf("%f",&score[i][j]);
    printf("每个学生的平均成绩分别为:");
    average = student_aver(score);
    for(i=0;i<3;i++)
        printf("%.2f ",average[i]);

    free(average);
    return 0;

float* student_aver(float score[3][3])

    float *average = (float*)malloc(sizeof(float) * 3);
    int i,j;
    float sum;
    for(i=0;i<3;i++)
    
        sum=0;
        for(j=0;j<3;j++)
            sum=sum+score[i][j];
        average[i]=sum/3;
   

    return average;

参考技术B

函数是无法返回数组的,只能返回指针,但返回指针的弊端是指针指向的内存不能是函数的局部变量的。所以还得用传出参数,有两个办法,一是直接用一个array就搞定,另它的每一行的最后一列是计算出来的平均值;另一个方法就是再传入进去一个指针,返回平均数。第一种可以不修改当前接口直接改,但如果无所谓还是第二种比较好,代码如下:

void student_aver(float array[3][3], float average[3]) 
    int i, j;
    float sum;
    for (i = 0; i < 3; i++) 
        sum = 0;
        for(j=0;j<3;j++)
    sum=sum+array[i][j];
average[i] = sum/3;
    

参考技术C #include<stdio.h>
#include<stdlib.h>
#include<string.h>
float* student_aver(float array[3][3], int n)

int i,j;
float sum;
float *a = (float*)malloc(n*sizeof(float));
if(a == NULL)
return NULL;
memset(a,0,sizeof(float)*n);
for(i=0;i<n;i++)

sum=0;
for(j=0;j<n;j++)
sum=sum+array[i][j];
a[i]=sum/3;

return a;



int main(void)

float score[3][3];
int i,j;
printf("请输入学生各科的成绩:");
for(i=0;i<3;i++)
for(j=0;j<3;j++)
scanf("%f",&score[i][j]);
printf("每个学生的平均成绩分别为:");
for(i=0;i<3;i++)
printf("%.2f\t ",student_aver(score,3)[i]);
printf("\n");
return 0;

你好 代码修改如下,你看一下,有不懂得继续问。

C语言中有没有返回数组类型的函数?

看来你是还没有理解数组的概念,数组名实际上就是指向该数组第一个元素的指针,比如说:
int
array[3]=1,2,3的一个数组,这里的array实际上是一个指针,指向了这个数组的第一个元素。这时候你的*array
=
1,*(array
+
1)
=2,*(array
+
2)
=
3。
这时候你应该知道,所谓的返回数组和返回指针实际上是一个概念。
int
*
retInt()

int
array[3]=1,2,3;
return
array;

实际上就是返回了一个数组。你的最后一个问题,指定数组类型,实际上只要指定指针类型就可以了。
还有一种方法就是楼上的兄弟说的了,定义一个新的数据类型存放数组,函数返回该数据类型也就相当于返回了一个数组。
(上面的函数中数组有作用域问题,仅做说明使用。)
参考技术A memcpy(ave,
average(score,p,q),
sizeof(ave));
要显式的把返回的数组数据拷贝到另一个数组中。
另外,你average函数中的aver是局部变量,你怎么能把它返回呢?这块内存在返回前就失效了。
参考技术B 没有。

以上是关于c语言函数返回数组的主要内容,如果未能解决你的问题,请参考以下文章

c语言函数返回数组

C语言函数中返回数组

C语言中有没有返回数组类型的函数?

C语言中函数调用怎么返回两个值

c语言如何返回一个数组?

C语言函数中怎么返回一个二维数组