这是我提出的另一个问题的延续。

考虑以下代码: 通用标签

它并没有使我感到惊讶(显然我不像我想的那样了解C语法)并生成了以下错误: 通用标签

如果将char *更改为char [],则可以正常编译: 通用标签

有人可以向我解释为什么吗?

有帮助吗?

解决方案

在第一个示例(char *hi = "hello";)中,您将创建一个非常量指针,该指针已初始化为指向静态常量字符串“ hello”。从理论上讲,该指针可以指向您喜欢的任何内容。

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

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top