• c语言伪常量const理解


      const是伪常量,无法用于数组的初始化和全局变量的初始化,本质就是限定一个变量不能直接赋值。

      如以下代码:

    1 #define A 10
    2 int arr[A];
    3 
    4 //const本质,伪常量 ,无法用于数组初始化和全局变量初始化
    5 /*
    6 const int B = 10;
    7 int arr[B];
    8 */

      但是如果局部变量是能够初始化编译并运行的

    1 void main()
    2 {
    3     const int B = 10;
    4     int arr[B];
    5 }

      const是伪常量,都知道常量是不能改变值的。例如这样是根本无法编译的。

    1 void main() {
    2     //num在栈区,只有栈区会自动回收释放
    3     //局部const常量在栈区,而不在静态区(静态区会一直存在)
    4     const int num = 10;//num就是一个常量
    5     //num = 11; //const本质,限定一个变量不能直接赋值
    6 }

      前面一直强调const是伪常量,因为可以间接的去改变它的值。利用指针变量

     1 void main() {
     2     //num在栈区,只有栈区会自动回收释放
     3     //局部const常量在栈区,而不在静态区(静态区会一直存在)
     4     const int num = 10;//num就是一个常量
     5     //num = 11; //error const本质,限定一个变量不能直接赋值
     6 
     7     //间接改变常量值
     8     const int *p = #//定义一个指针指向一个常量,存储num的地址
     9     int *pv = (int *)p;//对指向常量的指针进行强制转换
    10     *pv = 8;//对指针指向内容赋值
    11 
    12     printf("%d",num); //8
    13 
    14 }

     

      

      

  • 相关阅读:
    session监听
    Ubuntu上安装MongoDB(转)
    JAVA中的集合(转)
    Iterator的用法(转)
    PHPExcel常用方法汇总(转)
    MongoDB的安装及在PHP中的配置Windows版
    [转载]使用FastReport 3.0及以上版本创建动态报表的几个技巧
    FastReport
    ZeosLib
    [转载]FastReport问题整理
  • 原文地址:https://www.cnblogs.com/loveyouyou616/p/5753232.html
Copyright © 2020-2023  润新知