假设以下代码在 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/