C++ Primer第四版第四章关于C-style strings的讲法是不是有误

C++ Primer第四版第四章关于C-style strings的说法是不是有误?
一开始讲的时候,似乎就有问题了:
C++ Primer第四版第四章关于C-style strings的讲法是不是有误
C++ Primer第四版第四章关于C-style strings的讲法是不是有误

这里的const char* pointer应该是char* pointer to const吧!

------解决方案--------------------
不知道LZ想要表达什么

int main()
{
    const char * cp = "somevalue";
    while (*cp)
    {
        std::cout << *cp << std::endl;
        ++cp;
    }
    return 0;
}

但上述代码是完全木有问题滴~~~
但下述代码就有问题了

int main()
{
    char * const cp = "somevalue";
    while (*cp)
    {
        std::cout << *cp << std::endl;
        ++cp; //这里会报错,因为cp是只读的
    }
    return 0;
}

------解决方案--------------------
引用:
Quote: 引用:

不知道LZ想要表达什么

int main()
{
    const char * cp = "somevalue";
    while (*cp)
    {
        std::cout << *cp << std::endl;
        ++cp;
    }
    return 0;
}

但上述代码是完全木有问题滴~~~
但下述代码就有问题了

int main()
{
    char * const cp = "somevalue";
    while (*cp)
    {
        std::cout << *cp << std::endl;
        ++cp; //这里会报错,因为cp是只读的
    }
    return 0;
}


既然如此,书上就应该说是char* pointer to const,而不是const char* pointer

LZ你想表达神马?const char * cp不就是const char *pointer,或者LZ想要说的东西是pointer to a constant character. 我估计LZ你只是英语理解有误罢了~
------解决方案--------------------
明白你的意思,你觉得const char* pointer应该翻译成指针常量
而pointer to const才表示指向常量的指针(常量指针)是吧
pointer to const翻译成常量指针固然没错
const char* pointer应该怎么翻译还是得看语境,毕竟这句话不是纯英文的
它里面包括了C++的关键字和英语单词pointer,
个人觉得这句话应该从C++语法的层面来翻译:
dereferences the const char* (pointer)cp
解引用cp,其中cp为const char*类型
------解决方案--------------------
感觉楼主有点抠中文的意思了,文中的表述是c++语法风格的,而楼主的表述是英文语法风格的,更别说中文了,指针常量,常量指针,反倒让国内读者犯迷糊
------解决方案--------------------
1)char const* //a pointer ( that pointer to  )  char const
               //常量指针,指向常量字符(类型)的指针,一个指向常量字符(类型)的指针 
2)const char * //a pointer ( that pointer to  )  const char 
               //常量指针,指向常量的指针,一个指向常量字符类型的指针 
3)char *const   //a pointer (who is) constant( that pointer to  )char;
                   //指向字符的指针常量, 一个指针(是常量)指向字符(类型) 。 
中文,英文的意思是一致的。
这个地方,很符合汉语的习惯。
反倒是,不太符合英文习惯。
不过 const 在前,有强调数据是常量的意思。
所以,习惯把const写在 类型 前面。
现在,很多人把 const 写在 类型后面;
似乎,这样更合乎英文的习惯。

关键是const 这种修饰性的,类型关键字;
可以在前,也可以在后,所以到指针这里,容易引起误解。
最主要的是,这里通常,不能用()改变优先级 ,如果可以的话,就简单了。
PS:
3)char *const 等价于如下写法:
4)(const (char*))
如果编译器允许 4)这种写法,就好理解了。   




------解决方案--------------------
引用:
Quote: 引用:

感觉楼主有点抠中文的意思了,文中的表述是c++语法风格的,而楼主的表述是英文语法风格的,更别说中文了,指针常量,常量指针,反倒让国内读者犯迷糊


问题是我说的那种是符合之前作者的风格的呀。


我反倒不理解常量指针和指针常量,看英文解释却很清晰