C ++中的指针声明

时间:2010-04-30 07:26:22

标签: c++ pointers

在C ++中有什么区别 char const *ptr=&ch;const char *ptr=&ch;

5 个答案:

答案 0 :(得分:32)

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

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

只是为了完成设置,const char * const ptrconst 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指针。