码迷,mamicode.com
首页 > 其他好文 > 详细

常量指针和指针常量

时间:2016-09-24 17:29:12      阅读:141      评论:0      收藏:0      [点我收藏+]

标签:

常量指针:

const int *p = &a; 或者 int const *p = &a;

*p是常量,不能将*p作为左值进行操作。但指针p还是一个变量,它的内容存放常量的地址,所以先声明常量指针再初始化是允许的,指针也是允许修改的

int a = 0,b = 1;
const int *p;    //  声明常量指针p
p=&a;            //  p指向a
p=&b;            //  修改指针的值p让其指向b,允许
*p=2;            //  修改指针所指向的变量的值,不允许

指针常量:

int * const p = &a;

指针本身是一个常量,指针指向一个变量

即p是常量,不能作为左值进行操作,但允许修改其指向的内容,即*p是可修改的。指针常量必须在声明的同时对其初始化,不允许先声明一个指针常量随后再对其赋值,这和声明一般的常量是一样的。

int a = 0,b = 1;
int *const p1 = &a; 
int *const p2;           //  不允许,必须常量定义时必须对其初始化
p2 = &b;                 //  不允许,p2是指向a的常量, 不允许作为左值
*p1 = 2;                 //  允许,  指针指向的是一个变量, 可以修改指针*p1的值

 

快速记忆:

把一个声明从右向左读。 

char  * const cp; ( * 读成 pointer to ) 
cp is a const pointer to char 

const char * p; 
p is a pointer to const char; 

 

常量指针和指针常量

标签:

原文地址:http://www.cnblogs.com/zywu/p/5903563.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!