Я очищаю свой С++ и наткнулся на любопытное поведение в отношении строк, массивов символов и нулевого символа ('\0'
). Следующий код:
#include <iostream>
using namespace std;
int main() {
cout << "hello\0there"[6] << endl;
char word [] = "hello\0there";
cout << word[6] << endl;
string word2 = "hello\0there";
cout << word2[6] << endl;
return 0;
}
выводит результат:
> t
> t
>
Что происходит за кулисами? Почему строковый литерал и объявленный массив char хранят 't'
в индексе 6 (после внутреннего '\0'
), но объявленная строка не работает?