从函数返回本地字符数组 [英] Return local character array from a function
本文介绍了从函数返回本地字符数组的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
如何从一个函数返回本地字符数组
How to return a local character array from one function
char* testfunction()
{
char array[] = "Hello World";
return array;
}
char main()
{
char* array = testfunction();
printf(" %s -> string", array);
return 0;
}
此代码导致未知错误
@ $ @< Ʉ ; Y @ ->字符串
�@$�@<��Ʉ�;���Y@��� -> string
推荐答案
一旦移除堆栈框架(函数返回后),该变量将被销毁,因此不应直接返回堆栈变量的地址.
You should not return the address of the stack variable directly as it is destroyed once the stack frame is removed(after the function returns).
您可以这样做.
#include <stdio.h>
#include <algorithm>
char* testfunction()
{
char *array = new char[32];
std::fill(array, array + 32, 0);
snprintf(array, 32, "Hello World");
return array;
}
int main()
{
char* array = testfunction();
printf(" %s -> string", array);
delete[] array;
return 0;
}
这篇关于从函数返回本地字符数组的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文