在C++中,
char const *ptr=&ch;
和const char *ptr=&ch;
有什么区别?char const *ptr=&ch;
和const char *ptr=&ch;
有什么区别?它们是相同的,即 指向常量字符的指针
。
然而,char * const ptr
是不同的,它是一个指向(非常量)字符的常量指针
。
为了完整起见,const char * const ptr
是一个 指向常量字符的常量指针
。
const
限定符放在被限定类型后面的好例子。char const *
看起来很奇怪,但与char const * const
保持一致。 - Frerich RaabeC++ 中没有差别。
重要的是在 *
前或者后加上 const
。
Const(常量)适用于其直接左侧的任何内容(除非那里没有任何内容,在这种情况下它适用于其直接右侧的任何内容)。所以没有区别。
char * const ptr
指的是一个指向变量值的常量指针。
其他答案已经涵盖了技术解决方案-你的两个例子是一样的。
许多人在处理C++中的const
时更喜欢从右到左阅读。在英语中,我们喜欢想象一个常数X,而C++喜欢解析一个X const。从右到左阅读可以得到更加符合英语语言习惯的结果。
以下是一个相当极端的例子:
C const * bar(A * const, B const * const) const;
从右到左读取,这表示“一个常量函数bar
,以一个指向常量A
的指针和一个指向常量B
的常量指针作为参数,返回一个指向常量C
的指针”。请注意,这三种指针都是不同的。
char const *ptr=&ch;
和const char *ptr=&ch;
表示字符是常量,而指针是可变的(或者可以改变)。
但是在char * const ptr
的情况下,一旦设置了指针,就不能重新分配指针。因此,它是一个指向字符字符串的常量指针。