当前位置:网站首页>const、volatile和restrict的作用和用法总结
const、volatile和restrict的作用和用法总结
2022-07-05 00:27:00 【金士顿】
const
const(constant)关键字可修饰变量、函数参数、返回值或函数体。
定义只读变量。
限制函数参数。防止意外修改。增加程序安全性和可靠性。
如const char *p表示,p指针指向的值不可更改,就是这个指针不能用来修改数据
如char *const p表示,p指针指向的地址不可更改
如const int arr[]则数组内的值都不能修改
const char *const p表示,所指向的数值和地址都不能变
const double locked[4]
double *pc=rates
pc=locked这句是非法的。因为locked是不能修改的
源文件中使用const int i = 1则在其他文件中应使用extern const int i,如在头文件中则应用static const int i = 1,因为各文件中需要包含这个头文件,需要static保证内部性。但如果用此方法存储数组,因为各个文件都需要创建这个静态数组,可能会占用较多的存储空间,需要从更多方面去考虑它的利弊。
volatile
volatile限定词则表示变量除了可被程序修改外还可能被外部代理修改,如变量保存当前的时钟时间。
编译器优化编译时会把不变的值放在寄存器,以供读取,标记volatile可以保证不被放入寄存器。
如不能被程序改变而能被代理改变则const volatile int i。
restrict
restrict只能用于指针int* restrict ptr,这样就使得ptr是指向某数据块的唯一方式。
可防止数据被其他指针操作。如在memcpy中为防止有重叠区域,采用restrict修饰传入的指针。同时,restrict也有利于编译器优化。
作者:胡哈哈哈
链接:https://www.jianshu.com/p/58f618bd9ea3
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
边栏推荐
- IELTS examination process, what to pay attention to and how to review?
- Specification for fs4061a boost 8.4v charging IC chip and fs4061b boost 12.6V charging IC chip datasheet
- js如何实现数组转树
- npm install报错 强制安装
- 模板的进阶
- Leetcode70 (Advanced), 322
- Hisilicon 3559 universal platform construction: YUV422 pit stepping record
- It's too convenient. You can complete the code release and approval by nailing it!
- 积分商城游戏设置的基本要点
- Expand your kubecl function
猜你喜欢
2022.07.03(LC_6108_解密消息)
[IELTS reading] Wang Xiwei reading P4 (matching1)
Fast parsing intranet penetration helps enterprises quickly achieve collaborative office
Application of fire fighting system based on 3D GIS platform
Netcore3.1 JSON web token Middleware
Face recognition 5- insight face padding code practice notes
Learn C language from scratch day 024
Paper notes multi UAV collaborative monolithic slam
Using fast parsing intranet penetration to realize zero cost self built website
Every time I look at the interface documents of my colleagues, I get confused and have a lot of problems...
随机推荐
How to avoid arc generation—— Aafd fault arc detector solves the problem for you
Go pit - no required module provides Package: go. Mod file not found in current directory or any parent
Hologres Query管理及超时处理
The company needs to be monitored. How do ZABBIX and Prometheus choose? That's the right choice!
业务场景功能的继续修改
Summary of week 22-07-02
Detailed explanation of openharmony resource management
npm install报错 强制安装
2022.07.03(LC_6109_知道秘密的人数)
uniapp上传头像
如果炒股开华泰证券的户,在网上开户安全吗?
Date time type and format in MySQL
Build your own minecraft server with fast parsing
[论文阅读] TUN-Det: A Novel Network for Thyroid Ultrasound Nodule Detection
(脚本)一键部署redis任意版本 —— 筑梦之路
Every time I look at the interface documents of my colleagues, I get confused and have a lot of problems...
ORB(Oriented FAST and Rotated BRIEF)
图解网络:什么是网关负载均衡协议GLBP?
What did I pay for it transfer to testing post from confusion to firmness?
Ap8022 switching power supply small household appliances ACDC chip offline switching power supply IC