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 }

     

      

      

  • 相关阅读:
    利用userData实现客户端保存表单数据
    随机提取10条记录
    分页的文本显示
    用VB.NET写的一个简易的RSS阅读器
    怎样提高你的Google Adsense收入?
    全球500家最大公司及网址
    HTC教程
    老百姓是这样买房的
    使用JavaScript+XML实现分页
    恋爱的奇妙感觉,当爱在靠近...
  • 原文地址:https://www.cnblogs.com/loveyouyou616/p/5753232.html
Copyright © 2011-2022 走看看