首页 > 代码库 > 指向const对象的指针和const指针

指向const对象的指针和const指针

const char *p1;/指向const对象的指针

char const *p2;//同上

char *const p3;//const 指针

区别:const后面是什么就限定什么,比如char const *p 就是限定(*p),(*p)就是p指向的那段内存不能变,p的值可以改变,如果是char* const p就是限定p指针的值。

1. 指向const对象的指针,适合做函数形参,保证指向对象不被修改

 1.1 p1指向的值不可改变,指向const对象,但是p1可以被修改指向非const对象

const char c1 =‘c‘;

p1 = &c1;

char c2 = ‘d‘;

p1 = &c2;//p1指向了非const对象,但p1不同通过*p1来改变其值。 

char *p4 = &c;

p1 = p4;

*p4 = e‘;//p4对象指向被改变,p1也指向它,同样被改变。

 1.2 非指向const对象的指针不能指向const对象

2.const指针

 2.1 p3不能指向其他地址

char c3 = ‘f‘;

p3 = &c3;

char c4 = ‘g‘;

char *p5 = &c4;

p3=p5;//错误,p3是const,不能被修改

c3 = ‘h‘;//c3被修改,指针指向的值同样被修改

 

指向const对象的指针和const指针