指针常量与常量指针
- 指针常量是指定义的指针只能在定义的时候初始化,之后不能改变其值,格式如下:【数据类型】【*】【const】【指针常量名称】;
实例如下:
1 char*constp1;2 int*constp2;
const 位于指针声明符“*”的右侧,这说明声明的对象是一个常量,而对象的数据类型是指针。所以第一句定义了一个只读的字符型指针p1;第二句定义了一个只读的整型指针p2。常指针的值不能改变,但是其指向的内容却可以改变。如下列:
去掉注释则编译出错:error C3892: “p1”: 不能给常量赋值(VS 2005);
指针所指向的内存地址不能更改,指针的值只能在定义的时候初始化,其他地方不能更改。
2.常量指针是指向常量的指针。因为常量指针指向的对象是常量,因此这个对象的值是不能够改变的。定义的格式如下:
【数据类型】【const】【*】【常量指针名称】;
或
【const】【数据类型】【*】【常量指针名称】;
如下例:
#include<iostream>using namespace std;int main(){ char a[5]="abcd"; char b[5]="efgh"; const char * p1=a; const char * p2=b; cout<<"Before Change:"<<endl; cout<<"a:"<<a<<endl<<"b:"<<b<<endl<<"p1:"<<p1<<endl; a[0]='1'; p1=p2; //*p2='2'; cout<<"After Changed:"<<endl; cout<<"a:"<<a<<endl<<"b:"<<b<<endl<<"p1:"<<p1<<endl; getchar(); return 0;}输出结果:如果去掉注释则编译出错:error C3892: “p2”: 不能给常量赋值;
可以看出,常量指针所指向的对象的值是不能通过常量指针来改变。这一特性常被用于函数参数的传递。