Modyfikowanie łańcucha znaków char * const
wiem toconst char *
jest wskaźnikiem do znaku char, podczas gdychar *const
jest stałym wskaźnikiem do znaku. Testuję to w następującym kodzie:
const char *s = "hello"; // Not permitted to modify the string "hello"
char *const t = "world"; // Not permitted to modify the pointer t
s = "hello2"; // Valid
// t = "world2"; // Invalid, gives compilation error
// *(s + 1) = 'a'; // Invalid, gives compilation error
*(t + 1) = 'a'; // Why does this not work?
Ostatni wiersz nie zawiera żadnego błędu, ale powoduje nieoczekiwane zakończenie programu. Dlaczego modyfikowanie łańcucha wskazywanego przezt
nie dozwolony?