const限定符和指针结合起来常见的情况有以下几种。:
一、常量指针(不能改变常量,但可以改变指针)
const int* p;
int const * p;
这两种情况是一样的,p 是一个指向 const int 型的指针,p所指向的内存单元的值不能被改写,但是 p 存的地址可以被改写。所以(*p)++是不可以的,而 p++是可以的!
一般来说,第二种很少用,因为 int* 本就是一种指针类型。
二、指针常量(不能改变指针,但可以改变常量)
int* const p;
p 是一个指向 int 型的 const 指针,p 存的地址不能被改写(指针只能指向一个地址),但是 p 所指向的内存单元的值可以被改写(虽然指针只能指向一个地址,而且不能修改指针的值,但是可以修改该地址的值)
三、指向整形常量的常量指针
const int* const p;
p 是一个指向 int 型的 const 指针,p所指向的内存单元的值不能改写,而且 p 存的地址也不能被改写
知识点习题:
- 以下关于指针的说法,正确的是()
A. int *const p与int const *p等价
B. const int *p与int *const p等价
C. const int *p与int const *p等价
D. int *p[10]与int (*p)[10]等价
正确答案:C
正确答案: A
答案解析:
3的指针指向不可以变
如有不同见解,欢迎留言讨论~~