C语言中的关键字

Static

静态局部变量

在这里插入图片描述
结果:
在这里插入图片描述
a作为静态局部变量,第一次进入该函数的时候,进行第一次变量的初始化,在程序整个运行期间都不释放。(因为下一次调用还继续使用上次调用结束的数值)
但是其作用域为局部作用域,但定义它的函数或者语句块结束时,其作用域的也随之结束。

静态全局变量

修饰全局变量的时候,这个时候全局变量只在文件中访问,不能在其他的文件中访问,即便是extern外部声明也不可以。

关于变量:首先程序以及变量下载后都在flash中,程序运行的时候,必然才能从FLASH中出来到内存中的。

Volatile

就是告诉编译器,不要对变量的读取和存储去做优化。不加它,程序会运行的很快,不会与内存之间进行读写存储。
它是被设计用来修饰被不同线程访问和修改的变量。如果没有volatile,基本上会导致这样的结果:要么无法编写多线程程序,要么编译器失去大量优化的机会。

但是在是需要加的:
1.并行设备的硬件寄存器

在读写的时候,需要告诉这个变量是不稳定的,编译的时候不需要优化。(不需要优化的意思就是去特殊地址去访问它)。

2.中断服务程序中修改的供其它程序检测的变量,需要加volatile
  当变量在触发中断中修改,而编译器判断主函数里面没有修改该变量,因此可能只执行一次从内存到寄存器的读操作,而后每次只会从该寄存器中读取变量副本,使得中断程序的操作被短路。
3.多任务环境下各个任务间共享的标志,应该加上volatile:
  在本次线程内, 当读取一个变量时,编译器优化时有时会先把变量读取到一个寄存器中;以后,再取变量值时,就直接从寄存器中取值;当内存变量或寄存器变量在因别的线程等而改变了值,该寄存器的值不会相应改变,从而造成应用程序读取的值和实际的变量值不一致 。

Extern

有两个以上文件都需要使用共同的变量,我们将这些变量定义为全局变量。

Const

定义常量;防止数据改变。

宏 # 和## :

#:转换成一对双引号括起来的参数名字符串
如: #define PRINT(NAME) printf(#NAME)
PRINT(Hello word 1);
##:连接符,即把两个宏变量拼接到一起。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/293244.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

深入理解 JavaScript 函数:提升编程技能的必备知识(中)

🤍 前端开发工程师(主业)、技术博主(副业)、已过CET6 🍨 阿珊和她的猫_CSDN个人主页 🕠 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 🍚 蓝桥云课签约作者、已在蓝桥云…

基于kubernetes实现PaaS云平台-rancher

基于Rancher实现kubernetes集群管理 一、Rancher介绍 1.1 Rancher Rancher 是一套容器管理平台,它可以帮助组织在生产环境中轻松快捷的部署和管理容器。Rancher可以轻松地管理各种环境的 Kubernetes,满足IT需求并为 DevOps 团队提供支持。 Rancher 用…

JUC并发编程 08——原子操作类

目录 一.原子更新基本类型类 实现原理 二.原子更新数组 三.原子更新引用类型 四.原子更新字段类 Java从JDK1.5开始提供了J.U.C下的atomic包,atomic包提供了一系列的操作简单,性能高效,并能保证线程安全的类去更新基本类型变量&#xff0…

数字图像处理-空间域图像增强-爆肝18小时用通俗语言进行超详细的总结

目录 灰度变换 直方图(Histogram) 直方图均衡 直方图匹配(规定化) 空间滤波 低通滤波器 高通滤波器 ​​​​​​​ 本文章讲解数字图像处理空间域图像增强,大部分内容来源于课堂笔记中 灰度变换 图像增强&…

C++的面向对象学习(4):对象的重要特性:构造函数与析构函数

文章目录 前言:将定义的类放在不同文件夹供主文件调用的方法一、构造函数与析构函数1.什么是构造函数和析构函数?2.构造函数和析构函数的语法3.构造函数的具体分类和调用方法①总的来说,构造函数分类为:默认无参构造、有参构造、拷…

【扩散模型】9、Imagen | 借用语言模型的能力来实现文生图(NIPS2022 Oral)

文章目录 一、背景二、方法2.1 预训练的语言编码器2.2 扩散模型和 classifier-free guidance 三、效果 论文:Imagen: Photorealistic Text-to-Image Diffusion Models with Deep Language Understanding 官网:https://www.assemblyai.com/blog/how-imag…

Python命名规范中的[单/双][前导/后缀]下划线小结

如图所示 出处 Single and Double Underscores in Python Names

flutter + firebase 云消息通知教程 (android-安卓、ios-苹果)

如果能看到这篇文章的 一定已经对手机端的 消息推送通知 有了一定了解。 国内安卓厂商这里不提都有自己的FCM 可自行查找。(国内因无法科学原因 ,不能使用谷歌服务)只说海外的。 目前 adnroid 和 ios 推送消息分别叫 FCM 和 APNs。这里通过…

金蝶云星空业务对象添加网控设置

文章目录 金蝶云星空业务对象添加网控设置排查是否已经网控设置网控设置 金蝶云星空业务对象添加网控设置 排查是否已经网控设置 网控设置

TrustZone之安全启动与引导失败处理

一、引导和信任链 引导是任何TrustZone系统的关键部分。只有在引导流程中之前运行的所有软件组件都是可信的情况下,才能信任某个软件组件。这通常被称为信任链。下图显示了一个简化的信任链: 在我们的示例中,首先运行的代码是boot ROM。我们必须隐式信任boot ROM,因…

JavaScript高级 函数进阶篇

函数进阶 1、函数的定义和调用 函数声明方式function关键字(命名函数);函数表达式(匿名函数);new Function()(此处的Function()是一个构造函数);var fn new Function(参…

输入框获取焦点

Entry Component struct Test {build() {Row() {Column({ space: 5 }) {//Text("自定义样式").customStyles(20,Color.Yellow).backgroundColor("#36D").padding(10).borderRadius(30)TextInput({placeholder: "获取焦点"}).borderColor(Color.Y…