天天看點

程式員之路:C++常量指針和指針常量

這個問題,我看了三遍,看完就忘記,寫下來給未來的自己看

首先,先來一個段代碼再說

#include <iostream>
 
using namespace std;
 
int main(){
    int a=5;
    int b=6;
    //常量指針
    //*p不可修改 *p = 8;(ERROR),p 可以修改 p = &b  (OK)
    const int *p=&a;
    cout<<"*p:"<<(*p)<<endl;
    p=&b;
    cout<<"*p:"<<(*p)<<endl;
    //*p=6;error
 
    //指針常量
    //*p可以修改*p = 8;(OK),p不可以修改 p++(ERROR)
    int *const q=&a;
    cout<<"*q:"<<(*q)<<endl;
    *q=7;
    cout<<"*q:"<<(*q)<<endl;
 
    const int * const pq = &a;    // *p 和 p均不可改變了
 
    return 0;
}
       

簡而言之,就是const修飾誰,誰就是常量,這裡把“*”(星号),了解為獨立的字元——指針,就比較好了解了

1、常量指針:

const int *p=&a;      

按照,從左往右讀,

常量const,指針*,這裡把*p,看做一個整體,被const修飾,是以:

*p的值,即a的值,不能通過*p修改;

p的值,即p指向的變量可以修改,上述代碼中就把p重新指向了b

p=&b;      

2、指針常量:

int *const q=&a;      

依然從左往右讀,

指針*,常量const,const修飾q,是以:

q的值,不能被修改;

*q的值,可以被修改;

*q=7;      

3、最後一個是指正和變量都是常量,均不能被修改

const int * const pq = &a;    // *p 和 p均不可改變了
       

本文參考百度知道,寫的其實很清楚了,如果覺得本文内容繁瑣,可以參考如下連結

參考:

https://zhidao.baidu.com/question/349376199.html

歡迎交流 部落客QQ:1940607002

繼續閱讀