C/C++中的常量指针与指针常量
生活随笔
收集整理的這篇文章主要介紹了
C/C++中的常量指针与指针常量
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
常量指針
常量指針是指向常量的指針,指針指向的內存地址的內容是不可修改的。
常量指針定義“const int *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是常量不允許作為左值 *p1=2; //允許修改指針*p1的值如果指針作為函數參數,當我們不想被調用函數隨意修改參數指針而只是想修改參數指針指向的內容時,我們常把指針常量作為參數。例如:
有兩個整形變量a,b,我們寫個函數用于交換a,b的值,利用指針作為形參,函數修改參數指針的值是我們不希望的,這時可將參數設為指針常量,如果函數對指針修改編譯是將報錯。
void Exchange(int *const a,int *const b) {int temp;temp=*a;*a=*b;*b=temp }事實上,如果函數不修改參數本身的值,我們一般對參數加上const限定,這也是提高代碼質量的一個小技巧,在類的方法中,如果方法不修改類屬性的值,我們也常將方法加上const。
總結
以上是生活随笔為你收集整理的C/C++中的常量指针与指针常量的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: c++类的内存布局
- 下一篇: c++中关于字符串的读入——cin、ge