Q这些初始化有什么区别?
char a[] = "string literal"; char *p = "string literal";如果我尝试为p[i].
A字符串字面量(C 源代码中双引号字符串的正式名称)可以两种略有不同的方式使用。
有些编译器有一个开关,用于控制字符串字面量是否可写(用于编译旧代码),有些编译器可能提供选项,将字符串字面量正式视为 const 数组(以获得更好的错误捕获)。const char(以获得更好的错误捕获)。
另请参阅问题 1.31、6.1、6.2、6.8 和 11.8b。
参考:K&R2 第 5.5 节,第 104 页
ISO 第 6.1.4 节,第 6.5.7 节
Rationale 第 3.1.4 节
H&S 第 2.7.4 节,第 31-2 页