c语言关于数组运算和返回数组的问题

来源:百度知道 编辑:UC知道 时间:2024/05/21 07:53:59
定义了并赋值了float a[10],b[10];
然后希望通过一个函数function(a,b),把c[10]的每一项等于a,b对应的相加,然后把整个数组返回。
好像定义的时候是float *function(float[],float[]);
具体要怎样做呢

#include <stdio.h>
#include <stdlib.h>
#define N 10
float *function(float[], float[]);

void main()
{
float a[N] = {1.0f, 2.0f, 2.0f, 4.1f, 5.2f, 7.8f, 9.6f, 3.2f, 2.1f, 3.5f};
float b[N] = {1.0f, 2.0f, 2.0f, 4.1f, 5.2f, 7.8f, 9.6f, 3.2f, 2.1f, 3.5f};
float* c = function(a, b);
//打印验证
int i;
for (i=0; i<N; ++i)
{
printf("%f ",*(c+i));
}
//释放内存
free(c);

}
float *function(float a[], float b[])
{
float *c = (float*)malloc(sizeof(float)*N);
int i;
for (i=0; i<N; ++i)
{
c[i] = *a++ + *b++;
}
return c;
}

float *c = (float*)malloc(sizeof(float)*N);
可以改为
static float c[N]={0};
这样在main函数里面就可以避免用free(c)

可以用返回值的方法得到,但推荐使用出参形式。

以下为返回方式得到,注意使用完毕后free掉:
float *fun(const float *a, const float*b,const int size)
{
float *ret = (float*)malloc(size