Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/155.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ VS静态字符串是否可写?_C++_Visual Studio_Visual Studio 2008_Static Variables - Fatal编程技术网

C++ VS静态字符串是否可写?

C++ VS静态字符串是否可写?,c++,visual-studio,visual-studio-2008,static-variables,C++,Visual Studio,Visual Studio 2008,Static Variables,如果我在函数中声明以下静态变量: void some_function() { static char name[] = " :\\Folder\\file.ext"; name[0] = 'C'; } 我可以写入它吗,或者我必须为此在堆栈上声明它吗 这个代码可以用微软Visual Studio 2008编译,并且U.P/>>P>静态C++中的对象遵循与任何其他对象相同的一般规则:它们是可写的,只要它们不是 const 。name数组的元素是可写的 在这方面,VS没有什么特别

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

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

    name[0] = 'C';
}
我可以写入它吗,或者我必须为此在堆栈上声明它吗


这个代码可以用微软Visual Studio 2008编译,并且U.P/>>P>静态C++中的对象遵循与任何其他对象相同的一般规则:它们是可写的,只要它们不是<代码> const 。
name
数组的元素是可写的


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

您可以编写
静态变量。但是,请注意,
静态
变量仅在程序启动时初始化一次。因此,如果您第二次输入该函数,
name
的内容将从函数开始时起变成
“C:\\Folder\\file.ext”

尝试:


好啊谢谢我只是确认一下。
static char name[]=“废话”是可写的,但是
静态字符*name=“blah”不可写,应该是
静态字符常量*
(如果不是,编译器可能会抱怨)。@Eljay:Hah,很有趣。我不知道。谢谢你的信息。如果链接器声明为
static char*name
,则链接器确实会将其放入只读内存部分。必须本质上暗示它是一个
常量
。这就是我使用静态字符串的全部目的。如果不是静态的,就不会浪费时间将其推到堆栈上。
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