指針指向常量,相似於常量引用,指向常量的指針(pointer to const)不能用於改變其所指對象的值;ios
const 指針,指針自己爲常量(const pointer),必須 初始化,指針的值不能改變spa
typedef int *pint;類型別名指針
const pint cpint = 0; //cpint是指向int的常量指針code
const pint *pi; //pi是一個指針,它的對象是指向int的常量指針對象
不能將pint替換爲int *blog
const int *cint = 0; //指向const int 的指針ci
const pint cpint = 0; //指向int的常量指針io
1 #include <iostream> 2 using namespace std; 3 int main() 4 { 5 int ival = 1024; 6 int ival2 = 2048; 7 const int cival = 4096; 8 9 const int *pcint = &ival; //指向常量的指針 10 cout << *pcint << endl; //1024 11 12 pcint = &ival2; //指針的值可改變,指向的值不能改變 13 cout << *pcint << endl; //2048 14 // *pcint = 4096; //error:不能給常量賦值 15 int *const cpint = &ival; //常量指針(指針爲常量) 16 // cpint = &ival2; //error:不能給常量賦值 17 *cpint = 4096; // ok 18 cout << *cpint << endl; //4096 19 20 const int *const cpicp = &ival; //指向常量對象的常量指針(指針和指向的對象都是常量) 21 22 // cpicp = &cival; //error:不能給常量賦值 23 // *cpicp = 4096; //error:不能給常量賦值 24 25 typedef int *pint; //基本數據類型爲指針 26 const pint cint = &ival; //常量指針 27 cout << cint << endl; //0043FC60 28 cout << *cint << endl; //4096 29 30 const pint cint2 = &ival2; 31 // cint = cint2; //error:不能給常量賦值 32 *cint = 512; // ok 33 34 // pint const pcint = &ival2; //error 重定義:不一樣的類型修飾符 35 36 const pint *pi = &cint; // pi是一個指針,對象是指向int的常量指針 37 cout << pi << endl; //0043FC18 38 cout << *pi << endl; //0043FC60 39 cout << **pi << endl; //512 40 }