C++ Const指針學習

Const指針

const指針顧名思義就是常量指針的意思。下面將經過一些具體例子說明const指針的幾種用法。ios

const type *p 特性

  • 防止使用p指針來修改p所指向的值,下面是最簡單的錯誤例子;
1 #include <iostream>
  2 
  3 using namespace std;
  4 
  5 int main()
  6 {
  7     int yes = 100;
  8     const int *p = &yes;
  9 
 10     *p = 10;  //Error assign!
 11 
 12     return 0;
 13 }

用g++編譯的結果是:c++

error: assignment of read-only location ‘* p’.
  • p所指向的依舊是變量,並非常量,所以能夠經過yes自己來修改值。基於這個緣由,我以爲c++primer plus中將p稱爲指向一個常量對象的指針是不正確的,反而像編譯結果同樣,將其稱爲只讀指針更加符合中文的含義;
  • 將const變量的地址賦給普通指針是非法的,簡單程序例子以下;
7     const int yes = 100;
  8     int *p = &yes;
用g++編譯的錯誤爲:invalid conversion from ‘const int*’ to ‘int*’ .
  • 將指針指向指針的const關係將遵循以上三條規則進行遞歸判斷是否合法。一樣不能將const 常量數組的地址賦給普通指針;不能將常量做爲參數傳遞給很是量形參的函數。
  • 能夠修改p的值。

type * const p 特性

  • 沒法修改p的值,能夠修改*p的值,我將其稱爲常量指針;
相關文章
相關標籤/搜索