C++入门:const与指针

C++入门:const与指针,第1张

当存在宏(_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

 

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1295521.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-10
下一篇 2022-06-10

发表评论

登录后才能评论

评论列表(0条)

保存