在C ++中有什么区别
char const *ptr=&ch;
和
const char *ptr=&ch;
答案 0 :(得分:32)
它们是相同的,即pointer to const char
。
但char * const ptr
与不同,为const pointer to (non-const) char
。
只是为了完成设置,const char * const ptr
是const pointer to const char
。
答案 1 :(得分:7)
C ++没有区别。
重要const
在*
之前或在*
之后。
答案 2 :(得分:6)
Const 适用于其左边的任何内容(除非没有任何内容,否则它适用于它的直接权利)。所以没有区别。
char * const ptr
将成为变量值的const指针。
答案 3 :(得分:2)
其他答案涵盖了技术解决方案 - 您的两个示例是相同的。
在C ++中处理const
时,很多人更喜欢从右到左阅读。在英语中,我们喜欢考虑常数X,而C ++喜欢解析X const。从右向左阅读会产生更多的英语结果。
一个相当极端的例子:
C const * bar(A * const, B const * const) const;
从右到左,它读作'常量函数bar
作为参数,作为A
的常量指针和常量B
的常量指针,返回指向a的指针常数C
'。请注意,所有三种指针都不同。
答案 4 :(得分:0)
char const *ptr=&ch;
和const char *ptr=&ch;
表示char是const,其中指针是可变的(或者可以更改)。
但是在char * const ptr
的情况下,一旦设置它就无法重新分配指针。所以它是一个指向char字符串的const指针。