为什么这个char*可以修改?

char*定义的是一个字符串常量,如果修改的会需要new,但是我下面的这个为什么修改了,
而且正确输出

char *pmsg = "ssdf";
pmsg = "hello c string";
len_c = strlen(pmsg);
cout << pmsg << endl;
cout << "c length:" << len_c << "  sizeof:" << sizeof(pmsg) << endl;

输出

 hello c string
c length:14  sizeof:8

我用的是ubuntu14.04,哪位能解释一下,谢谢

不能修改的是常量本身,而不是指针。
char *pmsg = "ssdf";
pmsg[0] = 'a'; 这个不允许
pmsg = "a"; 这个是允许的。

strlen检查的是字符串的长度,sizeof通常是用来检查变量类型的大小的,例如 int a; sizeof(a) 相当于sizeof(int).

并没有修改呀,你的指针变量刚开始指向的是 ssdf 那个字符串,后来你又把它指向了hello c string 这个常量串