假如有数组a[5]={1,2,3,4,5}和数组b[5];实现调用子函数add_1,从而返回一个数组,赋值给数组b[5],请问应该怎么实现?要求具体的程序,用C语言实现。谢谢
#include <stdio.h>
#define MIN(x,y)
int * add_1();
main()
{
int * p = add_1();
int b[5];
for(int i=0;i<5;i++)
{
b[i] = *(p+i);
}
for(i=0;i<5;i++)
{
printf("%d",b[i]);
}
}
int * add_1()
{
int static a[5]={1,2,3,4,5};
return a;
}
注意事项
一、该数组不能是返回函数的局部变量数组,因为局部变量数组在退出函数后会被释放。
可以是全局变量,静态局部变量,动态分配内存,以及从函数参数传过来的数组地址。
二、返回指针时,无法返回长度,所以需要其它方式传回数组长度,以下是几种常用的方法。
1、约定固定长度。
2、以函数参数返回数组长度。
3、将长度保存在全局变量中。
4、约定数组结束标记。
5、在数组中存储数组长度,如存在第一个元素中。
有些时候需要子函数将一个数组返回出来,通常是两种方法,一种是靠指针,另一种是结构体。
例如指针:
#include <stdio.h>
char *test(char *tmp)
{
return tmp;
}
void main(void)
{
printf("%s",test("第一个测试例子\n"));
}
C语言调用数组返回数组可用两种形式实现:
1、通过参数返回数组
void add_1( int a[], int n, int b[] )2、返回动态分配数组(指针,需要调用者free释放)
#include <stdlib.h> //动态分配内存malloc需要引用该头文件主程序:
#include <stdio.h>将数组a调用子函数add_1,子函数add_1的功能是数组a中的各个元素加1,返回的也是一个数组,并且将它赋值给数组b,我想实现的是这个意思,不知道我说明白了没有?
追答这个还要我改吗 返回数组的步骤已经给你了 只要把a数组+1不就可以了吗?
追问我想说的是数组a经过加一之后再赋值给b数组,类似于b=add_1(a)的样子,能帮我写一下吗?谢谢
追答这样子的数组的返回貌似不能直接赋值
#include
#define MIN(x,y)
int * add_1(int a[]);
main()
{
int a[5]={1,2,3,4,5};
int * p = add_1(a);
int b[5];
for(int i=0;i<5;i++)
{
b[i] = *(p+i);
}
for(i=0;i<5;i++)
{
printf("%d",b[i]);
}
}
int * add_1(int a[])
{
for(int i=0;i<5;i++)
{
a[i] = a[i]+1;
}
return a;
}
将数组a调用子函数add_1,子函数add_1的功能是数组a中的各个元素加1,返回的也是一个数组,并且将它赋值给数组b,我想实现的是这个意思,不知道我说明白了没有?