我看到一个关于以下两个问题的区别的提问:
const char*
并且
const char[]
曾经有一段时间,我认为数组只是指针的语法糖。但现在有些事情让我感到困扰,我有一段类似以下代码的片段:
namespace SomeNamespace {
const char* str = { 'b', 'l', 'a', 'h' };
}
我遇到了一个错误:scaler对象“str”在初始化程序中需要一个元素。 因此,我尝试了如下方法:
namespace SomeNamespace {
const char str[] = { 'b', 'l', 'a', 'h' };
}
一开始它是有效的,我认为这可能与当它是const char*时会应用额外操作有关,而GCC从来不喜欢在函数外执行操作(这也是不好的实践),但错误似乎并没有表明如此。然而,在:
void Func() {
const char* str = { 'b', 'l', 'a', 'h' };
}
正如预期的那样,它编译得很好。有人知道为什么吗?
x86_64/i686-nacl-gcc 4(.1.4?) pepper 19工具链(基本上是GCC)。