• const和volatile是否可以同时修饰一个变量?有什么特殊含义?


    QUESTION:const和volatile是否可以同时修饰一个变量?有什么特殊含义?
    ANSWER:如果一个变量不会被本程序改变,通常可能给它加上const,但如果该变量可能被其他程序改变而本程序又在检测这个变量的值,就需要给它加上volatile,于是变量就同时有volatile和const了

     const和volatile是可以同时修饰一个变量的  const只是表示变量只读 不能出现在赋值号左边  防止程序“意外”修改   并且编译器一定会做优化 不会每次去内存取值  这个时候如果外部事件 如中断服务程序 改了这个变量的内存值  那么由于编译器优化就不会出有反应 这样会导致错误  加上volatile就告诉编译器 不要做任何优化  并且每次都去内存取值  而且这个变量不可以当左值使用 .
     大家看 这个求平方的函数有没有问题
    int square(volatile int *ptr)
    
    {
    
    return *ptr * *ptr;
    
    }




    这个地方用volatile其实真是画蛇添足  因为在求平方的时候 确实很可能外部改变了内存值 导致第一次取的值*ptr和第二次取的不一样的 导致结果不是平方  还有第二个问题  就是返回值  平方会很大 所以返回值用 unsigned long为好

    修改的方法 直接就 
    unsigned long square(int a)
    {
    return a * a;
    }


  • 相关阅读:
    CentOS8安装Mysql5.7
    CentOS8搭建FTP服务器
    CentOS8安装jdk1.8
    基于可穿戴设备的医疗监护系统
    air530GPS数据通过air202上传阿里云
    bzoj2594: [Wc2006]水管局长数据加强版
    bzoj3091: 城市旅行
    Problem A. Array Factory XVII Open Cup named after E.V. Pankratiev Stage 4: Grand Prix of SPb, Sunday, Octorber 9, 2016
    hdu5716
    bzoj2002: [Hnoi2010]Bounce 弹飞绵羊
  • 原文地址:https://www.cnblogs.com/HuaiNianCiSheng/p/3074753.html
Copyright © 2020-2023  润新知