#include <iostream>
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 <<v1<<'\t'<<v2<<'\t'<<v3<<'\t'<<v4<<'\t'<<v5<<std::endl;
// the result (v1, v2 v3 are different, v4 and v5 could be the same):
0xbffff460 0xbffff450 0xbffff440 0x8048844 0x8048844
// assignment to array elements:
*t1 = 'x'; *t2 = 'q'; *ct = 'y';
// modifying string literal: could be segmentation error:
*s1 = 'w'; *s2 = 'z';
return 0;
}