程序员之路:C++常量指针和指针常量

来源:互联网 发布:做淘宝培训 编辑:程序博客网 时间:2024/06/05 19:41

这个问题,我看了三遍,看完就忘记,写下来给未来的自己看
 
首先,先来一个段代码再说

 

#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

 

原创粉丝点击