从读写权限的角度分析C语言关键字const

  1. 变量的读写权限
    在这里插入图片描述
  2. const:将将变量变为只读
    在这里插入图片描述
  3. const修饰指针:
    const可以修饰指针时有两种情况,即p和*p,同时,指针可以通过解引用来改变原变量的值,面对此情况,遵循:权限可以同等或者缩小传递,但不能放大传递。
    在这里插入图片描述
    上面代码红色波浪线代表编译不通过,重点分析:p1=&b;//错误:权限不能放大传递,为什么不能放大传递呢?
    (1)因为:如果p1=&b成立,那么p1就可以通过解引用间接改变b的值,这样,而b是可读不可写的,两者矛盾,再看p1=&b,对b来说,自己都没有写权限,还能赋给p1权限吗? 所以权限可以同等或者缩小传递,但不能放大传递。
    (2)同理:p1=ab;也是错误的。ab只有读权限,而p1读写权限都要,自然不行。
    (3)const int *p2与 int const *p2是一样的,数据类型对于const而言是透明的。
    (4)const修饰的变量或指针要赋初值,不然就没有意义,const int *p2比较特别。

猜你喜欢

转载自blog.csdn.net/qq_42953408/article/details/86500757
今日推荐