char *str = "Hey baby";
为字符串创建内存并将 str
指向它。如果这是有效的,为什么不是以下内容:
int *x = {7, 0, 1};
这应该做同样的事情,除了它们是 int
而不是 char
。
最佳答案
有“不可变的整数集”,它看起来像:
(const int[]){7, 0, 1}
正确的术语是复合文字。你可以指向它:
const int *ptr = (const int[]){7, 0, 1};
由于历史原因,字符串文字没有 const
类型,尽管它是不可变的。但是使用 const char *
指向它们是个好主意,这样编译器就会检测到您何时尝试写入它们。
const
类型的复合文字可能会像字符串文字一样“折叠”,即它们可能与其他此类复合文字重叠。非常量复合文字确实具有唯一地址并且可以写入。
关于c - 为什么没有不可变的整数集而不可变的字符集是可能的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28923809/