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 这个常量串