常量指針與指針常量
常量指針,就是指向常量的指針,關鍵字 const 出現在 * 左邊,表示指針所指向的地址的內容是不可修改的,但指針自身可變。 指針常量,指針自身是一個常量,關鍵字 const 出現在 * 右邊,表示指針自身不可變,但其指向的地址的內容是可以被修改的。
例: 常量指針: const char* ptr = “hello”; 指針常量: char* const ptr = “hello”;
另外常量指針有兩種寫法:const既可寫在類型前,又可寫在類型后。如上面的例子,常量指針:char const * ptr = “hello” 也是正確的。
最后再舉個例子,與迭代器經常在一起用。 若希望迭代器所指向的東西不可變,則需要的是 const_iterator。例:
std::vector<int>::const_iterator Iter = vec.begin();
*Iter = 10;//錯誤,Iter是常量指針
Iter++;//正確,Iter本身可變
若希望迭代器本身不可變,指向的內容可變,則可以這樣寫:
const std::vector<int>::iterator Iter = vec.begin();
*Iter = 10; //正確,指針常量
Iter++; //錯誤,指針本身不可變
浙公網安備 33010602011771號