c - 在 C 中重新定义 const char*

标签 c constants

假设以下代码在 C 中:

const char * string = "123";
if(condition) string = "somethingelse";

printf("%s\n", string);

虽然我知道它正在工作(至少在 x86_64 上使用 gcc)并且没有生成编译器警告,但我想知道我是否应该这样做这样做或者是否有更好的选择。

请注意,此问题不是 Difference between char* and const char*? 的重复问题因为它明确询问重新定义变量的内容是否是好的做法。另一个问题是询问 char*const char* 之间的区别,如果已经知道另一个值的赋值意味着什么,接受的答案只会提供答案。这对我来说并不清楚,但这是这个问题的本质。

最佳答案

没关系,指针只是被重新分配了一个新值,该值也是 const char * 类型。

如果您希望指针本身也保持不变(我认为这有助于清晰度),您可以这样做:

const char * const string = condition ? "somethingelse" : "123";

这使得 string 具有“指向常量 char 的常量指针”类型,因此您不能重新分配它(当然也不能更改它指向的数据) .

关于c - 在 C 中重新定义 const char*,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47749859/

相关文章:

c - c 中的参数评估

c - 需要一些关于一行的解释(指针)

C缓冲区溢出

c++ - 在另一个类中访问静态常量。

c# - 声明一个长常量字节数组

C++ 类型 const* p 和类型 const* const p

c++ - 二进制搜索: how to determine half of the array

c - Malloc 更改另一个变量的值 (char*)

php - PHP 中的抽象常量 - 强制子类定义常量

javascript - 我可以在javascript中的键值对对象中使用常量值吗