zoukankan      html  css  js  c++  java
  • const 限定符:const指针、const引用

    1、C/C++ 中关于以下三种定义:

    const char *ptr;   不可以通过该指针改变指向内容;可以指向别的内容;

    char const *ptr;   同上;

    char* const ptr;   指针指向固定;指向内容可以改变;

    const char* const ptr;

    二、const变量相互转换

    1、基础概念说明

    (1)常量指针:顶层const

        指向常量的指针:底层const

    2、拷贝操作

    (1)顶层const:拷贝赋值操作并不会改变被拷贝对象的值,因此是否是常量没有关系;  

    int i = 0;
    const int ci = 10;
    i = ci;

    (2)底层const:拷贝操作的拷入和拷入对象必须有相同的底层const,或者两个对象的数据结构可以相互转换(int* -> const int* )

    const int ci = 10;
    int *p1 = &ci; //错误 (typeid(&ci).name() -> const int * )
    const int * const p2= &ci;
    const int *p3 = p2; //正确,跟顶层const无关

    3、引用绑定

     (1)引用类型必须与其所引用对象的类型一致;

     (2)表达式的类型能转换成引用类型即可;

    int i = 42;
    const int &r1 = i; //将const int & 绑定到普通int对象上;
    double dval = 3.14;
    const int &c1 = dval;   //正确,会绑定到临时量
    int &c2 = dval; //错误、绑定到临时量无意义
    // c1会绑定到临时对象上
    =>等同于
    double dval = 3.14;
    const int temp = dval;  //生成一个临时int变量
    const int &c1 = temp;
  • 相关阅读:
    Jquery EasyUI tabs处理
    C# ToString格式控制符
    SQL删除重复数据,保留一条
    stm32f4xx 的IWDG使用的一般步骤
    stm32f4xx 的EXTI使用的一般步骤
    STM32F4xx---EXTI 外部中断
    数组和指针 到 存储类(1)
    uCosII 从 OSStart开始到思维定势··········
    《C和指针》一书介绍操作符优先级
    OSTimeTick()函数解析
  • 原文地址:https://www.cnblogs.com/wllwqdeai/p/13534634.html
Copyright © 2011-2022 走看看