2010-04-30 87 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指針。