如何从函数中更改值或静态char*?C++

fly*_*out 3 c++ static types redefine

我正在尝试更改我在启动时定义的"静态字符*"的值,我是从函数内部执行的,当此函数返回var时,我尝试重新设置该值不会保留它.

例:

static char *X = "test_1";

void testFunc()
{
    char buf[256];
    // fill buf with stuff...
    X = buf;
}
Run Code Online (Sandbox Code Playgroud)

如何在不使用静态buf的情况下实现这一目标?我应该使用其他数据类型吗?如果是的话,哪一个?

Jam*_*lis 6

该行将X = buf指针设置为指向X数组的第一个元素buf.当函数返回时,buf超出范围并且不能再使用,因此指针在该点处无用.

除非您有特定的理由在程序中使用原始C字符串,否则使用std::string容器,然后您只需返回一个std::string而不用担心自己动态分配和管理字符串的内存.

  • @flyout:首先学习字符串...你将花费更少的时间学习`string`而不是追踪`char*`bug :) (5认同)