zoukankan      html  css  js  c++  java
  • C++杂谈(一)const限定符与const指针

    const限定符

    c++有了新的const关键字,用来定义常变量,可以替C语言中的#define。关于const限定符,有以下需要注意:

    1.创建后值不再改变

    2.作用范围在文件内有效

    3.添加extern关键字,使多个文件共用同一个常变量

    另外,int const与const int是等效的。

    const指针

    创建const指针时,const,*和变量类型的符号顺序会给人很大的困扰。一般来说,按照从右向左读的方式来判断其含义。

    1.

    const int *p=&i;

    与下面的语句等效。

    (const int) *p=&i;

    代表指向const int类型的指针。

    2.

    int *const p=&i;

    与下面的语句等效

    int *(const p)=&i;

    代表指向int类型的常指针。这个指针一直指向i,不可以改变指针指向的位置,可以改变所指向的变量的值。

    *p=5;//正确

    3.

    const int *const p=&i;

    代表指向常变量的常指针,不可以改变指针的指向,也不可以改变指针所指变量的值。

    *p=5;//错误

    所指的类型是const int,不可以修改它的值。

    这里,左边的const叫做底层const,右边的const叫做顶层const

    判断const指针的简便方法

    把*读作"pointer to",从右至左念:

    b是一个常量

    const int b;  /* b is a int const */
    int const b;  /* b is a const int */

    p是一个普通指针,指向一个常量

    const int *p; /* p is a pointer to int const */
    int const *p; /* p is a pointer to const int */

    p是一个常量指针,指向一个普通变量

    int *const p;  /* p is a const pointer to int */

    p是一个常量指针,指向一个常量

    const int *const p;  /* p is a const pointer to int const */
    int const *const p;  /* p is a const pointer to const int */
  • 相关阅读:
    Top WAF
    Access-Control-Allow-Origin与跨域
    SQLlite
    SHell命令总结
    yum仅下载RPM包不安装
    Taglib
    JFinal
    Eclipse maven git
    maven jetty plugin
    wechat
  • 原文地址:https://www.cnblogs.com/yatesxu/p/5332191.html
Copyright © 2011-2022 走看看