1. const只读变量
  • const修饰的变量是只读的,本质还是变量
  • const修饰的局部变量在栈上分配空间(可以通过指针修改)
  • const修饰的全局变量在全局数据区分配空间(指针也修改不了)
  • const只在编译期有用,在运行期无用
  • const修饰的变量不是真的常量,它只是告诉编译器该变量不能出现在赋值符号的左边
2.const的本质
  • C语言中的const使得变量具有只读属性
  • 现代C编译器中的const将具有全局生命周期(例如被static修饰的变量)的变量存储于只读存储区
  • const不能定义真正意义上的常量
int const和const int是一样的  
 
3.const修饰函数参数和返回值
  •  const修饰函数参数表示在函数体内不希望改变参数的值
  • const修饰函数返回值表示返回值不可改变,多用于返回指针的情形 
  • c语言中的字符串字面量存储于只读存储区中,在程序中需要使用const char*指针
 4.深藏不露的volatile
  • volatile可理解为“编译器警告指示字”
  • volatile告诉编译器必须每次必须去内存中取变量值
  • volatile主要修饰可能被多个线程访问的变量
  • volatile也可以修饰可能被未知因数更改的变量
 
c语言中能够定义真正意义上的常量只有枚举enum
 
 
 
 
 
 
 
 

const和volitale的更多相关文章

  1. C++的类型转换:static_cast、dynamic_cast、reinterpret_cast和const_cast(dynamic_cast还支持交叉转换,const_cast将一个类的const、volatile以及__unaligned属性去掉)

    在C++中,存在类型转换,通常意味着存在缺陷(并非绝对).所以,对于类型转换,有如下几个原则:(1)尽量避免类型转换,包括隐式的类型转换(2)如果需要类型转换,尽量使用显式的类型转换,在编译期间转换( ...

  2. LODProp3D实例

    1. Level of detail(LoD)多细节层次描述(简称LoD)是实时绘制复杂几何场景的一种有效工具.基于层次结构的动态简化方法能够根据视点的变化,实时连续地转换场景细节模型.在本例中,实现 ...

  3. cpp 4个类型转换

    static_cast.dynamic_cast.reinterpret_cast.const_cast 之间的区别 static_cast 用法:static_cast (expression) 说 ...

  4. C++学习笔记 四种新式类型转换

    static_cast ,dynamic_cast,const_cast,reinterpret_cast static_cast 定义:通俗的说就是静态显式转换,用于基本的数据类型转换,及指针之间的 ...

  5. c++ 数据类型转换: static_cast dynamic_cast reinterpret_cast const_cast

    c++ 数据类型转换: static_cast dynamic_cast reinterpret_cast const_cast  [版权声明]转载请注明出处 http://www.cnblogs.c ...

  6. dynamic_cast 和 static_cast 隐式类型转换的区别

    首先回顾一下C++类型转换: C++类型转换分为:隐式类型转换和显式类型转换 第1部分. 隐式类型转换 又称为“标准转换”,包括以下几种情况:1) 算术转换(Arithmetic conversion ...

  7. [c++] Pieces of knowledge

    再系统地学一遍c++,查缺补漏. wchar_t L'a' stored in wchar_t. size of types cout << numeric_limits<doubl ...

  8. [转]C++中四种类型转换符的总结

    C++中四种类型转换符的总结 一.reinterpret_cast用法:reinpreter_cast<type-id> (expression)    reinterpret_cast操 ...

  9. C++ 四种强制类型转换

    来自csdn:http://blog.csdn.net/hgl868/article/details/46619399 C风格的强制类转换(Type Cast)很简单,不管什么类型的转换统统是: TY ...

随机推荐

  1. H3C PPP协议的组成

  2. [C++] 烦人的error LNK2019和error LNK2001

    常见原因: 没有正确的设置引用的lib,新手常犯这个错误,这是最容易解决的问题. extern "C"的问题.如果C++写的dll要给C程序用,那么就要注意extern " ...

  3. 2019-8-24-win10-uwp-读取文本GBK错误

    title author date CreateTime categories win10 uwp 读取文本GBK错误 lindexi 2019-8-24 16:2:27 +0800 2018-2-1 ...

  4. LA 3942 ——Trie (前缀树)、DP

    #include <iostream> #include <cstdio> #include <cstring> #include <algorithm> ...

  5. JavaScript 判断对象中是否有某属性的常用方法

    一.点(.)或方框号([ ]) var obj = { test: '123' } obj.test obj['test'] 二.in 运算符 var obj = { test: '123' } te ...

  6. 两种方法,轻松上手ConfigMap!

    属性配置文件在任何应用程序中都非常重要.它们不仅可以让应用程序具备灵活性,还能够根据文件中配置的值产生不同的功能.实际上,在staging.开发.测试.UAT或生产环境中,我们都使用属性配置文件来驱动 ...

  7. vue-learning:13 - js - vue作用域概念:全局和局部

    目录 全局作用域:Vue对象 全局api 局部作用域: 实例对象vm 实例api 组件component 组件配置选项 在引入Vue文件时,就相当于拥有了一个全局Vue对象. 在var vm = ne ...

  8. codeforces 1183H 动态规划

    codeforces 1183H 动态规划 传送门:https://codeforces.com/contest/1183/problem/H 题意: 给你一串长度为n的字符串,你需要寻找出他的最长的 ...

  9. Jenkins安装部署与使用

    一.Jenkins平台安装部署 Jenkins官网免费获取Jenkins软件,官网地址为:http://mirrors.jenkins-ci.org/下载稳定的Jenkins版本.由于Jenkins是 ...

  10. 浅解 go 语言的 interface(许的博客)

    我写了一个 go interface 相关的代码转换为 C 代码的样例.也许有助于大家理解 go 的 interface.不过请注意一点,这里没有完整解析 go 语言 interface 的所有细节. ...