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
如果我在函数中声明以下静态变量:
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