返回一个 char 数组而不是 const char *

Returning a char array instead of const char *

本文关键字:char const 数组 返回 一个      更新时间:2023-10-16

如何从返回类型为 const char* 的函数返回本地字符数组?
注意:我想要一种不使用标准::字符串的方法

const char * getXXX()
{
  char buf[32];
  sprintf(buf,"XXX%d",i);  // some manipulation
  return buf; // How to return???
}
const char * getXXX()
{
  static char buf[32];
  sprintf(buf,"XXX%d",i);
  return buf;
}

这将起作用

正如您正确注意到的那样,您不应该返回 buf(这是一个局部变量,它的内存将在函数返回后被释放)。解决方案是分配一些内存并将其返回。

char * returnBuf = new char[32];
memcpy(returnBuf, buf, 32 * sizeof(char));
return returnBuf;

但请记住,调用方将负责释放 getXXX 返回的内存:

char * result = GetXXX();
// Process
delete[] result;