程序员之路:C++常量指针和指针常量
  TEZNKK3IfmPf 2023年11月15日 34 0

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

#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均不可改变了
【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月15日 0

暂无评论

推荐阅读
  TEZNKK3IfmPf   16天前   21   0   0 指针C++
  TEZNKK3IfmPf   2024年03月30日   140   0   0 C++c语言
  TEZNKK3IfmPf   2024年04月19日   53   0   0 进程c语言
TEZNKK3IfmPf