C语言自定义函数如何返回数组
使用 C 语言,在 main()
函数中调用了一个自定义的函数,想要从函数中获取其运行产生的字符串,直接返回数组是实现不了的,最起码也要返回数组的地址。但是在自定义函数中创建数组后,该数组本身是一个局部变量,当该自定义函数的生命周期结束后,局部变量也就被回收了,即使返回了一个代表数组的地址,但实际上其指代的内容可能已经发生了变化。
有三种方法可以实现自定义函数成功返回数组:
1、将数组定义为全局变量;
2、使用malloc
在堆区开辟动态空间;
3、在调用函数时传入数组地址。
—–>如果在需求允许的情况下,直接将数组定义为全局变量是最快的,直接在程序前声明即可。
—–>使用malloc
在堆区开辟动态空间:
#include <stdio.h>
#include <string.h>
#include <malloc.h>
char *getArr()
{
char *p;
p = (char *)malloc(10);
strcpy(p, "12345");
return p;
}
int main()
{
char *p;
p = getArr();
printf("%s",p);
free(p);
return 0;
}
—–>在调用函数时传入数组地址:
在主函数中定义了一个数组,然后在调用自定义函数时,将该数组的地址当作参数传递过去,这样也可以成功的使用数组中的内容,并在自定义函数生命周期结束后将内容返回。
#include <stdio.h>
#include <string.h>
char *getArr(char *p)
{
strcpy(p, "12345");
return p;
}
int main()
{
char arr[10] = { };
getArr(arr);
printf("%s",arr);
return 0;
}
此外,如果仅仅想使用自定义函数中声明的字符串常量,可以直接用函数返回其地址即可,因为字符串常量是存放在常量区,空间不随着自定义函数的结束而回收。