两类声明:C++字符串字面型和申报
char* str1 = "string 1";
和
char str2[] = "string 2";
我的编译器不允许我使用第一次申报与为const char一个错误 不正确的转换[8] char *。看起来不错, 这样的版本:
const char* str1 = "string 1";
编译通过。
请澄清我的理解。 我相信,如果我们宣布两个版本,例如在main()中, 第一个(const char *) - 唯一的指针将被分配到堆栈上并用数据段中的某个地址初始化。 第二个版本(char []) - 整个数组符号将被放置在堆栈上
据我所见,字符串常量现在总是有一个const char []类型。 是使用const char * depricated?仅用于C兼容?
其中每个版本将存储字符串?
C和C++是不同的语言!任何你期望他们表现完全一样的理由?这不是关于C. – Olaf
这很有趣,''string 1''是一个'const char [9]',而不是'const char [8]'。 – aschepler
@aschepler不好笑 - 正常。有一个结尾的0字符组成了9 ... – Aconcagua