VS 静态字符串是否可写?

Are VS static strings writable?

如果我在函数中声明以下静态变量:

void some_function()
{
    static char name[] = " :\Folder\file.ext";

    name[0] = 'C';
}

我可以写入它,还是必须为此在堆栈上声明它?

PS。此代码可以使用 Microsoft Visual Studio 2008 及更高版本编译。

C++ 中的静态对象遵循与任何其他对象相同的一般规则:只要它们不是 const,它们就是可写的。 name 数组的元素是可写的。

VS 在这方面没有什么特别之处。

您可以写入 static 个变量。但是请注意,static 变量仅在程序启动时初始化一次。因此,如果您第二次进入该函数,name 的内容将从函数开始处开始变为 "C:\Folder\file.ext"

尝试:

void some_function()
{
    static char name[] = " :\Folder\file.ext";

    cout << name  << endl;
    name[0] = 'C';
}

int main()
{
    some_function();
    some_function();
    return 0;
}

输出:

 :\Folder\file.ext
C:\Folder\file.ext