c++中的const修飾指針

const修飾指針是我們學習c++ 的過程中必須要經歷的事情,總是把我們整的暈頭轉向,可能也是我自身能力不行,大佬應該沒有這種感覺,言歸正傳,開始解剖指針。

一.const修飾指針--常量指針

例:int a = 10;

         int b = 20;

        const int * p = &a;       //常量指針

特點:指針的指向可以修改,但是指針指向的值不可以修改,稍微解釋一下,const後面接的是*  說明*p是不能修改的,*p是不是我們所說的指針指向的值,但是p沒有被const修飾,是可以修改的,p是不是我們說的指針的地址,這個是可以改變的,可以指針別的地址。

比如:*p = b.;   //錯誤,指針指向的值不可以修改

    p = &b;  //正確,指針的指向可以修改,相當於可以指向別的地址。

這時就有人要問了,不是說指針指向的值不能修改嗎,那通過修改指針的地址,指針的值一樣被修改了,這裏要注意的一點是,我們不能直接去修改指針的值,相當於不能直接給指針賦值,這樣應好理解了吧。比如 *p = 30;   這樣是錯的,常量指針不能直接修改指向的值。

 

二.const修飾指針--指針常量

例:int a = 10;

         int b = 20;

        int * const p= &a;       //指針常量

特點:指針的指向是不可以修改,但是指針指向的值可以修改,稍微解釋一下,const後面接的是p  說明p是不能修改的,p是不是我們所說的指針的指向,p是不是我們說的指針的地址,這個是不可以改變的,但是*沒有被const修飾,*p是可以修改的,。

比如:*p = b.;   //正確,指針指向的值可以修改

    p = &b;  //錯誤,指針的指向不可以修改,相當於不可以指向別的地址。

我們可以去直接修改指針指向的值,但是不能改變指針的指向,相當於指針的地址是不能修改的,比如 p = &b;   這就是錯的

 

三.const即修飾指針又修飾常量

例:int a = 10;

         int b = 20;

        const int * const p= &a;       //指針常量

特點:指針的指向是不可以修改,但是指針指向的值不可以修改,稍微解釋一下,const後面接的是p  說明p是不能修改的,p是不是我們所說的指針的指向,p是不是我們說的指針的地址,這個是不可以改變的,但是*也被const修飾,*p也是不可以修改的,。

比如:*p = b.;   //錯誤,指針指向的值不可以修改

    p = &b;  //錯誤,指針的指向不可以修改,相當於不可以指向別的地址。

 

程序如下

1 #include<iostream>
 2 
 3 using namespace std;
 4 
 5 int main(int argc, char **argv)
 6 {
 7     int a = 10;
 8     int b = 20;
 9 
10     //指針修飾常量 常量指針
11     const int * p1 = &a;
12     p1 = &b;
13     cout << *p1 << endl;
14 
15     //指針修飾常量 指針常量
16     int * const p2 = &a;
17     *p2 = b;
18     cout << *p2 << endl;
19 
20     //const即修飾指針,又修飾常量
21     const int * const p3 = &a;
22     cout << *p3 << endl;                                                               
23     return 0;
24 }
~                                                                                         
~                      

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章