c语言volatile和static关键字

static关键字:
1、不加static修饰,函数或代码块中的变量在函数或者代码块执行完毕后直接回收销毁,每次执行都会重新分配内存并且退出时销毁
2、加static休息,函数或者代码中的变量在函数或代码块第一次初始化分配完成后,即使函数或代码块执行完毕,该变量不会回收释放,知道程序结束static变量才会被回收。
3、当static作用于函数定义或者用于代码块外的变量声明时,static关键字将标识符的外部链接属性修改为内部链接属性,也就是说该变量或函数只能在当前源文件内访问,不能再其他源文件中访问。(不影响标识符的储存类型和作用域)
4、当static作用于代码块内部的变量声明时,static关键字改变了变量的存储类型。从自动变量变为静态变量

特点:
1、记忆性:static变量在两次函数调用时,第二次调用进入时,能保持第一次调用退出时的值。但是static变量的记忆性破坏了程序运行的可重复性,造成不同时刻代码块的运行结果可能不同
2、static变量生命周期具有全局性和唯一性,普通local变量的存储空间分配到stack上,因此每次调用函数时,分配空间都可能不一样,而static变量具有全局唯一性的特点,每次都指向同一个内存块,因此造成了代码块不可重入的问题。
博文参考:static关键字:https://blog.csdn.net/t595180928/article/details/80448249

volatile关键字:
优化的概念:
由于内存访问速度远不及CPU的处理速度,为提高性能,在硬件上引入高速缓存cache,加速对内存的访问。并且因为访问寄存器要比访问内存单元快的多,因此会将内存中的内容先加载到寄存器中,并从寄存器中读取数据,这样有助于减少存取内存的优化,但可能会读取"脏"数据。
volatile的意思为:“易变的”。当使用voliate声明变量时,系统总是重新从它所在的内存读取数据,即使指令刚刚从该处读取过数据。也就是说,使用voliate声明变量时,编译器对访问该变量不在进行优化,从而提供对特殊地址的稳定访问。
volatile关键字:https://blog.csdn.net/tigerjibo/article/details/7427366

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C语言中的volatile关键字是用来声明一个变量为“易变”的。这意味着该变量的值可以在程序执行期间随时发生变化,可能由于硬件或者其他并行执行的线程的影响。使用volatile关键字可以告诉编译器不要对该变量进行优化,以确保每次访问该变量时都从内存中读取最新的值。这对于需要频繁读写硬件寄存器或者在多线程环境下共享的变量非常有用。 参考资料: C语言深度解析专栏—C语言关键字详解第五篇 C语言再学习 -- 关键字volatile_聚优致成的博客-CSDN博客 更多关键字在下面博客链接 C语言关键字详解(一)auto、register关键字 C语言关键字详解(二)带你全面了解 static C语言关键字详解(三)数据类型与sizeof关键字 C语言关键字详解(四)带你全面了解 const 关键字<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [C语言关键字详解(五)带你全面了解 volatile 关键字](https://blog.csdn.net/m0_62391199/article/details/123746218)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [C语言volatile 关键字](https://blog.csdn.net/qq_58264156/article/details/127416196)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值