C语言自定义函数如何返回数组

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;
}

此外,如果仅仅想使用自定义函数中声明的字符串常量,可以直接用函数返回其地址即可,因为字符串常量是存放在常量区,空间不随着自定义函数的结束而回收。

    原文作者:Goallegoal
    原文地址: https://blog.csdn.net/qq_40644809/article/details/107136572
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞