Storage types in C++ --------------------- *Constant Data Values are known at compile-time. This kind of data stored outside of the program read-write area. Therefore write attempt is undefined. const char *hello1 = "Hello world"; char *hello2 = "Other hello"; // hello1[1] = 'a'; // syntax error hello2[1] = 'a'; // could cause runtime error char *s = const_cast(hello1); // dangerous s[3] = 'x'; // could be runtime error ! There is difference between a string literal and an initialized character array. int main() { // declaration of three arrays in the user data area // read and write permissions for the elements: char t1[] = {'H','e','l','l','o','\0'}; char t2[] = "Hello"; char t3[] = "Hello"; // declaration of two pointers in the user data area // read and write permissions for the pointers // ...and... // allocation of the "Hello" literal (possibly) read-only char *s1 = "Hello"; // s1 points to 'H' char *s2 = "Hello"; // ... and s2 likely points to the same place void *v1 = t1, *v2 = t2, *v3 = t3, *v4 = s1, *v5 = s2; std::cout <