可以用兩種不同的方式將const關鍵字用于指針。第一種方法是讓指針指向一個常量對象,這樣就可以防止使用該指針來修改所指向的值,第二種方法是將指針本身聲明為常量,這樣可以防止改變指針指向的位置。
首先,聲明一個指向常量的指針pt:
int age = 39;
const int *pt = &age;
該聲明指出,pt指向一個const int,因此不能使用pt來修改這個值。換句話說,*pt的值為const,不能被修改。
const int *pt = &age;
以上一句聲明中的const只能防止修改pt指向的值(這里為39),而不能防止修改pt的值。也就是說,可以將一個新的地址賦給pt:
int sage = 80;
pt = &sage;
但仍然不能使用pt來修改它指向的值(現在為80)。
第二種使用const的方式使得無法修改指針的值:
int sloth = 3;
const int *ps = &sloth;
int * const finger = &sloth;
在第三句聲明中,關鍵字const的位置與以前不同。這種聲明格式使得finger只能指向sloth,但允許使用finger來修改sloth的值。第二句聲明不允許使用ps來修改sloth的值,但允許將ps指向另一個位置。