詳解 常量指標和指標常量

weixin_34391854發表於2015-05-19

說一下 常量指標指標常量 的區別。

常量指標

  指向常量的指標,也就是說指標指向的物件是常量,指向的常量不能修改。指標不是一個常量,

可以把指標指向別一個常量。

常量指標是我們最常用的,一般宣告形式如下:

    const int *p;
    
    int const *p;

 

例:

    int a(1), b(3);
    const int *p; // 或者是 int const *p;
    p = &a;
    std::cout << "address  :  " << p << "   value : " << *p << std::endl;
    p = &b;
    std::cout << "address  :  " << p << "   value : " << *p << std::endl;

 

上邊的程式碼是正確的用法。

不可以對指向的內容做修改:

*p = 3; // 錯誤

 

指標常量

  指標指向的地址不可以改變,地址的內容可以通過指標改變。指標常量在定義時必須賦值。

例:

    int a(1), b(3);
    int *const p = &a; 
    *p = a;
    std::cout << "address  :  " << p << "   value : " << *p << std::endl;
    *p = b;
    std::cout << "address  :  " << p << "   value : " << *p << std::endl;

 

上邊的程式碼是正確的使用方式。

不能對指向的地址進行修改:

p = &b; // 錯誤

 

我們也可以這樣記

const 在誰前邊誰就不可以修改:

常量指標 : const 在指標前邊,我們就不可以修改指標。

指標常量 : const 在變數前邊,我們就不可以修改指標的地址。

 

相關文章