zoukankan      html  css  js  c++  java
  • 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 }

     

      

      

  • 相关阅读:
    iOS面试题
    iOS-block
    iOS开发设计模式
    iOS-宏定义
    正则表达式(转)
    iOS-textfield控制光标开始位置
    initWithNibName&initWithCoder &awakeFromNib&UIView常见属性方法
    iOS应用生命周期
    iOS-app发布新版本步骤
    iOS从App跳转至系统设置菜单各功能项
  • 原文地址:https://www.cnblogs.com/loveyouyou616/p/5753232.html
Copyright © 2011-2022 走看看