从函数返回本地字符数组 [英] Return local character array from a function

查看:84
本文介绍了从函数返回本地字符数组的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

如何从一个函数返回本地字符数组

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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆