例子:
char str[] = {"abc"}; char const *pStr1 = "hello"; char* const pStr2 = "yes"; char const * const pStr3 = "zebra"; pStr1 = str; // pStr2 = str; //这里将pStr2重新指向了str的内存地址,但是由于const修饰了*,则会报错pStr2不可改 // pStr3 = str; //这里将pStr3重新指向了str的内存地址,但是由于const修饰了*,则会报错pStr3不可改
解析:
char str[] = {"abc"}; => 定义一个字符数组
char const *pStr1 = "hello"; => 定义一个指针,该指针的const修饰左边的char,代表指向的内存地址的内容不可修改(是常量)
char* const pStr2 = "yes"; => 定义一个指针,该指针的const修饰左边的*,代表指向的内存地址不可修改,也就是说该指针无法改变指向地址
char const * const pStr3 = "zebra"; => 定义一个指针,第一个const修饰左边的char,第二个const修饰左边的*,表示指针指向的内存地址不可修改同时指向的内存地址的内容也不可修改