gpt4 book ai didi

c - 字符串数组初始化

转载 作者:太空狗 更新时间:2023-10-29 16:49:31 29 4
gpt4 key购买 nike

这是另一个 question 的延续我有。

考虑以下代码:

char *hi = "hello";

char *array1[3] =
{
hi,
"world",
"there."
};

令我惊讶的是它没有编译(显然我不像我想的那样了解 C 语法)并生成以下错误:

  error: initializer element is not constant

如果我将 char* 更改为 char[],它可以正常编译:

char hi[] = "hello";

char *array1[3] =
{
hi,
"world",
"there."
};

谁能给我解释一下为什么?

最佳答案

在第一个示例 (char *hi = "hello";) 中,您正在创建一个非常量指针,它被初始化为指向静态常量字符串“hello”。理论上,这个指针可以指向任何你喜欢的地方。

在第二个示例 (char hi[] = "hello";) 中,您专门定义了一个数组,而不是指针,因此它引用的地址是不可修改的。请注意,可以将数组视为指向特定内存块的不可修改指针。

您的第一个示例实际上在 C++ 中编译没有问题(至少我的编译器是这样)。

关于c - 字符串数组初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7834643/

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