2010-04-30 82 views
11

在C++中的声明什么 char const *ptr=&ch;const char *ptr=&ch;在C++指针

+1

有没有区别,欲了解更多信息:http://duramecho.com/ComputerInformation/WhyHowCppConst.html – Akanksh 2010-04-30 07:28:19

+1

可能重复的http://stackoverflow.com/questions/2211954/difference-between-these-two-const -pointer-declarations-c – starblue 2010-05-01 21:49:21

+1

此外,您可以使用[cdecl.org](http://cdecl.org) – bashor 2012-02-02 23:41:17

回答

32

它们是相同的,即pointer to const char

但是char * const ptr不同,是const pointer to (non-const) char

而刚刚完成设置,const char * const ptr是一个const pointer to const char

+2

+1。完整答案。 – ereOn 2010-04-30 07:32:08

+1

这是一个很好的例子,有利于在*类型被限定后加入'const'限定*。 'char const *'对许多人来说看起来很奇怪,但它与'char const * const'一致。 – 2010-12-20 08:22:07

7

在C++中没有差之间的差。

重要的是const*之前或之后*

6

常规适用于它的左边的任何东西(除非在那里没有任何东西在这种情况下适用于它的直接权利)。所以没有区别。

char * const ptr虽然是一个指向变量值的常量指针。

2

其他答案已经涵盖了技术解决方案 - 你的两个例子是相同的。

很多人喜欢在C++中处理const时从右到左阅读。在英语中,我们喜欢想一个常量X,而C++喜欢解析一个X const。从右向左读取产生更多英文结果。

一个相当极端的例子:

C const * bar(A * const, B const * const) const; 

由右至左此读为常数函数bar取作为参数恒定的指针到一个A和恒定指针到恒定B,返回指针到一个常数C'。请注意,所有三种指针都不相同。

+1

如果有人感兴趣,Stephen C. Dewhurst的书“C++ Gotchas”谈论了这种声明指针的技巧。 – TheJuice 2010-04-30 10:37:18

0

char const *ptr=&ch;const char *ptr=&ch;表示char是const,其中指针是可变的(或者可以改变)。

但是在char * const ptr的情况下,一旦设置它就不能重新分配指针。所以它是一个char字符串的const指针。