gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 06:15:02 24 4
gpt4 key购买 nike

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

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com