std::string s("abcde"); // s содержит символы a,b,c,d,e char& r = s[2]; // Ссылка на третий символ char* з = &s[3]; // Указатель на четвертый символ r = 'X'; // OK, s содержит символы a,b,X,d,e *p = 'Y'; // OK, s содержит символы a,b,X,Y,e s = "new long value"; // При перераспределении памяти r и p // становятся недействительными r = 'X'; // ОШИБКА: непредсказуемые последствия *p = 'Y'; // ОШИБКА: непредсказуемые последствия