C++入门:const与指针

当存在宏(_cplusplus)则以C++的方式编译,否则以C语言的方式进行编译

   const :在C和C++中的区别

  1. C语言中变量为主,C++中常性为主

C:const int n = 5;

   int arr[n] = { 1, 2, 3, 4};//error

C++:const int n = 5;

     int arr[n] = { 1, 2, 3, 4};//ok

//在C++中直接把值替换成对应的值

 

常性针对变量:不可以改值,可以改变指针指向

p2封锁了指向(封锁:只可读不可写)

const int *p2 = &a;//*p2 = 1000//error  p2 = &b//ok

int const *p3 = &a;//*p2 = 1000//error  p2 = &b//ok

常性针对地址:不可以改指针指向,可以改指针指向的地址所存储的值

p3封锁了自身

int* const p3 = &a;//*p3 = 1000//ok  p3 = &a;//error

常性即针对变量又针对地址:都不能改

p4封锁自身和指向

const int* const p4 = &a;//*p3 = 1000//ok  p3 = &a;//error

两个解释:

①常性不许改变,害怕通过地址对a进行改变;

②权限放大和缩小的原因:可以缩小不可以扩大//安全性

const int a = 10;

int *ip = &a//error   int *ip = (int*)&a//ok  const int* ip = &a//ok

int a = 10;

int *const p = &a;

int *s1 = p;//ok

const int *s2 = p;//ok

int * const s3 = p;//ok

const int *const s4; //ok


    const int a = 10;
    int *const p = &a;
    int *s1 = p;//error
    const int *s2 = p;//ok
    int * const s3 = p;//error
    const int *const s4; //ok

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值