C 语言 - 默认情况下静态初始化字符串是否以任何方式 const?

标签 c string declaration

这样的声明:

char* string = "Test";

是否带有一些隐式常量?

我想知道接下来的例子是否有意义。

const char* string = "Test";
char* const string = "Test";
const char* const string = "Test";

最佳答案

char* string = "Test";

不要那样做。这应该会产生一个警告,因为它实际上是一个静态字符串,但事实并非如此。如果您写入字符串,它将爆炸。

const char* string = "Test";

正确。

char* const string = "Test";

不正确。这意味着 string 指针不能改变,但它的内容可以,这除了错误之外不是很有用。

const char* const string = "Test";

正确。现在 string 指针及其内容都不能改变。我很少在 * 的右侧使用 const,但它有它的用途。

如果你真的想要一个可写的字符串使用

char string[] = "Test";

关于C 语言 - 默认情况下静态初始化字符串是否以任何方式 const?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42172711/

相关文章:

python - 使用列中的数据创建新列

javascript - 对象/类内的函数声明

c - 变量.c :4:1: error: expected declaration specifiers or '...' before '(' token

c++ - 在循环范围之外声明参数是否更有效?

c++ - 在 C 或 C++ 中,我如何在没有回车或空格的情况下为程序提供输入

c - fork() 在生产者/消费者中的使用

java - 当我们有字符串池时为什么要进行字符串重复数据删除

使用c递归创建线程

c - 线程对命令行输入的数字列表执行统计计算?

c - 我想用C编写程序打印完整数字的每个数字