指针常量OR常量指针,傻傻搞不清.

先找到,然后看的两边,右边是对指针p本身的限定,左边是对p所指向的东西的限定。

注:本文中我们将p的所指笼统地称为“东西”。

例如

1.const int p
右边没有限定成分,表明p就是我们熟悉的普通指针,p的内容(即值,也就是它指向的东西的地址)是可以改变的;
的左边是const int,表明p指向的东西是一个const的int,我们不能通过p来修改这个int,因为它是const的。(关于“不能通过p来修改”,我们后边还会详细解释)

2.int* const p
右边是const,表明p本身是const的,我们不能对p的内容进行修改(例如++p;是不可以的),的左边是int,即p指向的东西是普通的int,我们可以通过p来修改它(例如p=100;是可以的)。

3.const int* const p
右边是const,表明指针p本身是const的,*的左边是const int,表明p指向的int也是const的。即这种情况下,p本身不能修改,同时也不能通过p修改它所指向的那个int。