常量指針本質是指針,常量修飾它,表示這個指針是一個指向常量的指針(變數)。指針指向的對象是常量,那么這個對象不能被更改。
在C/C++中,常量指針是像這樣聲明的:
1)const int *p;
2)int const *p;
基本介紹
- 中文名:常量指針
- 外文名:pointer pointed to constant
- 釋義:指針指向的變數的值
- 格式:const int *p; int const *p;
- 分類:程式設計師用語
定義常量指針的語句格式為:const類型 * 變數 (或 類型 const * 變數)
如:
int i = 3;
int j = 5;
const int * p= &i;
則:
p = &j; /* 正確,p可以被重新賦值 */
*p = j; /* 錯誤,因為他改變的是p所指向的變數的值。*/
常量指針與指針常量
常量指針表示一個指針指向的變數為常量及帶有const屬性(e.x. const int *p) , 而指針常量表示一個指針本身為常量及指針本身帶有const屬性(e.x. int *const p), 常量指針指向的對象由於有const屬性, 無法直接改變, 但是指針本身值(及指針指向的記憶體地址)可以改變, 而指針常量則是指針本身有const屬性, 指針的值(及指針指向的記憶體地址)無法直接改變, 而該地址內的變數可以改變。
例子:
const char *p = "Hello, World"; //表示指針p是一個常量字元串的首地址, 指針p為常量指針
char a[20] = "Hello, World";
char *const p = a; //表示指針p本身為常量, 它將一直指向該記憶體區域直到它被釋放, 指針p為指針常量。(注意: 此時p的值雖然無法改變, 但是a的值可以改變。)
指針常量一般常用於當一個指針由始至終都指向一個對象時使用。