指針常量與常量指針
- 指針常量是指定義的指針只能在定義的時候初始化,之后不能改變其值,格式如下:【數(shù)據(jù)類型】【*】【const】【指針常量名稱】;
實(shí)例如下:
1 char * const p1; 2 int * const p2;
const 位于指針聲明符“*”的右側(cè),這說明聲明的對象是一個常量,而對象的數(shù)據(jù)類型是指針。所以第一句定義了一個只讀的字符型指針p1;第二句定義了一個只讀的整型指針p2。常指針的值不能改變,但是其指向的內(nèi)容卻可以改變。如下列:
#include<iostream> using namespace std; int main() { char a[5]="abcd"; char b[5]="efgh"; char * const p1=a; char * const p2=b; cout<<"Before Change:"<<endl; cout<<"a:"<<a<<endl<<"b:"<<b<<endl; *p1='1'; b[0]='2'; //p1=p2; cout<<"After Changed:"<<endl; cout<<"a:"<<a<<endl<<"b:"<<b<<endl; getchar(); return 0; }
輸出結(jié)果:
去掉注釋則編譯出錯:error C3892: “p1”: 不能給常量賦值(VS 2005);
指針?biāo)赶虻膬?nèi)存地址不能更改,指針的值只能在定義的時候初始化,其他地方不能更改。
2.常量指針是指向常量的指針。因?yàn)槌A恐羔樦赶虻膶ο笫浅A浚虼诉@個對象的值是不能夠改變的。定義的格式如下:
【數(shù)據(jù)類型】【const】【*】【常量指針名稱】;
或
【const】【數(shù)據(jù)類型】【*】【常量指針名稱】;
如下例:
#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; }
輸出結(jié)果:
如果去掉注釋則編譯出錯:error C3892: “p2”: 不能給常量賦值;
可以看出,常量指針?biāo)赶虻膶ο蟮闹凳遣荒芡ㄟ^常量指針來改變。這一特性常被用于函數(shù)參數(shù)的傳遞。
posted on 2011-02-06 00:21 Geek.tan 閱讀(1939) 評論(0) 編輯 收藏 引用 所屬分類: C++