zoukankan      html  css  js  c++  java
  • 【C语言】学习笔记6——const

    1. 用const创建变量, 虽然 #define 指令可以创建类似功能的符号常量,但是const的用法更加灵活,可以创建const数组、 const指针和 指向 const的指针

    const double PI = 3.14159

    2. 用const关键字保护数组

    const int days[12] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
    
    days[9] = 44;     //不允许,编译错误

    3. 指向 const 的指针不能改变值。指向const的指针通常用于函数形参中,表明该函数不会使用指针改变数据

    double rates[5] = {88.99, 100.12, 59.45, 15.22, 54.33};
    const double * pd = rates;
    
    *pd = 29.77;              //不允许
    pd[2] = 222.22;         //不允许  
    rates[0] = 66.66;        //允许,因为rates没有被const 限定
    
    pd++           // 允许,让pd指向 rates[1]

    4. 把 const 数据或者 非const 数据的地址初始化为 指向 const指针 或 为其赋值是合法的。 

    double rates[5] = {88.99, 100.12, 59.45, 15.22, 54.33};
    const double locked[4] = {0.22, 0.55, 0.33, 0.66,};
    
    const double * pc = rates;        //有效
    pc = locked;      //有效
    pc = &rates[3]    //有效

    5.只能把非const数据的地址赋给普通指针, 否则,通过指针就能改变const数组中的数据

    double rates[5] = {88.99, 100.12, 59.45, 15.22, 54.33};
    const double locked[4] = {0.22, 0.55, 0.33, 0.66,};
    
    double * pnc = rates;      //有效
    pnc = locked;          //无效
    pnc = &rates[3]       //有效

    6.C标准规定,使用非const标识符修改const数据导致的结果是未定义的

    7.const可以声明并初始化一个不能指向别处的指针, 关键是const的位置

    double rates[5] = {88.99, 100.12, 59.45, 15.22, 54.33};
    const double * const pc = rates;
    
    pc = &rates[2];    // 不允许
    *pc = 92.99;       //不允许
  • 相关阅读:
    面对复杂业务,if-else coder 如何升级?
    为什么StringBuilder是线程不安全的?
    Hashmap中文解释
    mysql 5.6 5.7 8.0新特性
    数据增强,扩充数据集
    神经网络参数优化器
    缓解过拟合
    损失函数
    神经网络的复杂度&指数衰减学习率&激活函数
    GRU&实例股价预测
  • 原文地址:https://www.cnblogs.com/yeyeck/p/9515308.html
Copyright © 2011-2022 走看看