为什么可以在字符串文字中添加整数?

Rec*_*ent -2 c++

我在乱搞,发现一些奇怪的东西.你实际上可以做"a" + 2,程序编译好,但不输出任何东西.然而"a" + 32array subscript is above array bounds.

Jas*_*eck 5

"a"实际上是一个const char [],但是它可以在没有强制转换的情况下转换为const char*或者转换为char*,当你对指针进行数学运算时,它就像数组下标语法一样工作.所以你要创建一个新的指针,它在字符串中更远.这个关于指针算术的参考可能很有用.如果你确实获得了对文字的char*引用,那么修改它仍然是未定义的(根据经验,如果在只读页面中它可能会崩溃,或者可能会更改使用它的所有引用).

  • `"a"实际上是一个const char*` - 不是它......它是一个`const char []`,它在必要时经历了一个隐式的标准转换为`const char*`. (3认同)