C语言const和volatile关键字】的更多相关文章

这部分内容比较简单,我这里直接先做总结,然后通过写三个测试代码,体会其中的关键点 一.总结      1.const使得变量具有只读属性(但是不一定就是不能更改) 2.const不能定义真正意义上的常量(因为有的用const定义的变量,仍然可以更改) 3.const将具有全局生命期的变量存储于只读存储区(这个是对现代编译器是这样的,但是对ANSI编译器,仍然可以更改) 4.volatile强制编译器减少优化,必须每次从内存中取值 5.const修饰的变量不是一个真的常量,它只是告诉编译器该变量不…
1.const关键字 (1)const 修饰的变量是只读的,它不是真正的常量,本质还是变量,只是告诉编译器不能出现在赋值号左边! (2)const 修饰的局部变量在栈上分配空间 (3)const 修饰的全局变量在全局数据区分配空间(vc.gcc 会将其放入常量区,bcc 放入全局数据区) (4) const 只在编译期有用,在运行期无用 #include <stdio.h> ;//bcc 下存储在全局数据区,可修改. //vc.gcc 将其存储在常量区,不可修改 int main() { ;/…
1.const只读变量 const修饰的变量是只读的.本质还是变量 const修饰的局部变量在栈上分配空间 const修饰的全局变量在全局数据区分配空间 const只在编译期有用,在运行期无用 const修饰的变量不是真的变量,它只是告诉 编译器该变量不能出现在赋值符号的左边实例一.cpp: #include <stdio.h> ; int main() { ; int* p = (int*)&cc; printf("cc = %d\n", cc); *p = ;…
java 语言中允许线程访问共享变量,为了保证共享变量能被准确和一致的更新,Java 语言提供了volatile 关键字,也就是我们所说的内存一致性: 问题抛出:(尝试去运行下面代码,以及将volatile 加上的运行结果) /** * 问题抛出 * @param args */ public class Volatile01 { public /*volatile*/ boolean flag = true; public static void main(String[] args) thr…
原文:C语言中关键字auto.static.register.const.volatile.extern的作用 关键字auto.static.register.const.volatile.extern这些关键词都是c++基础知识,我整理了一下,希望对新学的朋友们有用:(1)auto 这个这个关键字用于声明变量的生存期为自动,即将不在任何类.结构.枚举.联合和函数中定义的变量视为全局变量,而在函数中定义的变量视为局部变量.这个关键字不怎么多写,因为所有的变量默认就是auto的.(2)regist…
auto 这个这个关键字用于声明变量的生存期为自动,即将不在任何类.结构.枚举.联合和函数中定义的变量视为全局变量,而在函数中定义的变量视为局部变量.这个关键字不怎么多写,因为所有的变量默认就是auto的. register 这个关键字命令编译器尽可能的将变量存在CPU内部寄存器中而不是通过内存寻址访问以提高效率. static 常见的两种用途:  1>统计函数被调用的次数;  2>减少局部数组建立和赋值的开销.变量的建立和赋值是需要一定的处理器开销的,特别是数组等含有较多元素的存储类型.在一…
C语言中const关键字的作用: 修饰局部变量或者全局变量,表示变量n的值不能被改变了 修饰指针,分为常量指针与指针常量,也可以两者结合 常量指针指向的值不能改变,但是这并不是意味着指针本身不能改变,常量指针可以指向其他的地址 指针常量是指指针本身是个常量,不能在指向其他的地址 区分常量指针和指针常量的关键就在于星号的位置,我们以星号为分界线,如果const在星号的左边,则为常量指针,如果const在星号的右边则为指针常量.如果我们将星号读作‘指针’,将const读作‘常量’的话,内容正好符合.…
volatile提醒编译器它后面所定义的变量随时都有可能改变,因此编译后的程序每次需要存储或读取这个变量的时候,都会直接从变量地址中读取数据.如果没有volatile关键字,则编译器可能优化读取和存储,可能暂时使用寄存器中的值,如果这个变量由别的程序更新了的话,将出现不一致的现象.下面举例说明.在DSP开发中,经常需要等待某个事件的触发,所以经常会写出这样的程序: short flag; void test() { do1(); ); do2(); } 这段程序等待内存变量flag的值变为1(怀…
转载地址:https://zhuanlan.zhihu.com/p/56191979 ————— 第二天 ————— ———————————— Java内存模型简称JMM(Java Memory Model),是Java虚拟机所定义的一种抽象规范,用来屏蔽不同硬件和操作系统的内存访问差异,让java程序在各种平台下都能达到一致的内存访问效果. Java内存模型长成什么样子呢?就是下图的样子: 这里需要解释几个概念: 1.主内存(Main Memory) 主内存可以简单理解为计算机当中的内存,但又…
const关键字: 1.欲阻止一个变量被改变,可使用const,在定义该const变量时,需先初始化,以后就没有机会改变他了: 2.对指针而言,可以指定指针本身为const,也可以指定指针所指的数据为const,或二者同时指定为const: 3.在一个函数声明中,const可以修饰形参表明他是一个输入参数,在函数内部不可以改变其值: 4.对于类的成员函数,有时候必须指定其为const类型,表明其是一个常函数,不能修改类的成员变量: 5.对于类的成员函数,有时候必须指定其返回值为const类型,以…