I was messing around and noticed something strange. You can actually do "a" + 2
and the program compiles fine, but doesn't output anything. However "a" + 32
says array subscript is above array bounds
.
I was messing around and noticed something strange. You can actually do "a" + 2
and the program compiles fine, but doesn't output anything. However "a" + 32
says array subscript is above array bounds
.
"a" is actually a const char[], but it can be converted without a cast to a const char* or to a char* and when you do math on pointers it works like array subscript syntax. So you're creating a new pointer which is farther along in the string. This reference on pointer arithmetic might be useful. If you do get a char* reference to the literal, it still is undefined to modify it (from experience it might crash if in read-only page, or might change all references where it is used).