1. 程式人生 > >常量指針和指針常量

常量指針和指針常量

har 變量 abc 表示 針對 字符串 例子 常量指針 更改

1、常量指針(指針可改,指針指向的對象不可改)

常量指針本質是指針,用const修飾它,表示這個指針乃是一個指向常量的指針。指針指向的對象是常量,那麽這個對象不能被更改。

表示方法:

const int * ptr

int const * ptr

int a = 5;

const int* c = &a; //合法

*c = 6; //非法

char *str1, *str2;

str1 = "abcde1234";

str2 = "bcde";

int strcmp(const char *str1, const char *str2); //表示在該函數裏不會對形參的字符串內容進行修改

2、指針常量(指針不可改,指針指向的對象可改)

變量能修改,常量不可修改。所以指針變量能改指向,指針常量不能改指向。

(1)指針常量的本質是一個常量,而用指針修飾它,那麽說明這個常量的內容應該是一個指針。另外,數組名是一個指針常量。

表示方法:

int* const ptr

(2)因為指針常量是一個常量,在聲明的時候一定要給它賦初始值。一旦賦值,以後這個常量再也不能指向別的地址。

(3)指針常量的值是指針,這個值因為是常量,所以不能被賦值。

int a;

int* const p = &a; //初始化指針常量

int* q;

p = q; //非法,把上面的const去掉就合法了

(4)雖然指針常量的值不能變,可是它指向的對象是可變的,因為我們並沒有限制它指向的對象是常量。

int a = 100;

int* const p = &a; //初始化指針常量

*p = 50; //合法

3、指向常量的指針常量(指針不可改,指針指向的對象也不可改)

指向常量的指針常量就是一個常量,且它指向的對象也是一個常量。

表示方法:

const int * const ptr

int const * const ptr

因為是一個指針常量,那麽它指向的對象當然是一個指針對象,而它又指向常量,說明它指向的對象不能變化。

const int a = 25;

const int * const b = &a; //初始化

*b = 50; //非法

int * p;

b = p; //非法

4、一個例子

比如:

int a[10];

a++; //出錯,不可修改,因為a是指針常量

常量指針和指針常量