
《c语言深度剖析》读书笔记(一)关键字
1、
2、
3、
1、
2、
3、
4、
1、
2、
3、
4、
5、
发布日期:2021-05-13 00:02:00
浏览次数:16
分类:精选文章
本文共 1428 字,大约阅读时间需要 4 分钟。
一、三大常用关键字解析
这里将围绕C语言中的三大常用关键字进行详细讲解
1、auto
auto
是C语言中一个非常基础的关键字,其作用是自动确定变量的类型。编译器会根据变量的初始化内容来推断类型,从而自动为变量分配最合适的数据类型。
2、register
register
用于将变量优化到CPU的寄存器中,以提高访问速度。寄存器访问速度远高于内存,因此将关键性变量放进寄存器可以有效提升程序性能。
3、static
static
是用于限定变量或函数的访问范围。
static
函数的可见性仅限于定义所在的文件(即该文件的私有函数),适用于需要对公开接口进行严格控制的场景。 变量相关: 静态变量在程序整个运行期间都保持存在,通常用于避免局部变量优化失误导致的内存泄漏。 二、基础数据类型规范
在程序中,数据类型规范直接关系到代码的可维护性和安全性
1、数据类型模具
- 全局变量命名:大驼峰+Unix风格结合(如
Flash_Read()
) - 局部变量命名:小驼峰+Unix风格结合(如
data_in
) - 禁止通过大小写区分相似的标识符
- 函数名不得在程序中重复使用
2、类型命名规范
- 宏定义、枚举常数、只读变量均采用大写字母+下划线命名
- 循环变量仅限于
i, j, k
等常见字母 - 累加变量常采用
a
作为数组指标,p
作为指针
3、类型初始化
所有局部变量必须初始化,缺少初始化可能导致读取无确定性值
三、关键操作符规则
以下涉及若干特定关键字的操作规则
1、sizeof
sizeof
可省略变量名计算类型大小,必需带模子计算类型大小- 结构体大小计算需考虑偏移量因素
2、signed
/unsigned
- 编译器缺省默认为
signed
类型
3、if
/else
语句
if
判断bool
变量可以省去括号float
与精度比较需使用括号包围表达式if
语句需与else
保持一致结构else
始终与最邻近if
括号结合
4、switch
/case
- 每个
case
必须带break
(除特殊设计外) - 保留
default
分支即使不需要 case
后只能接整型或字符常量- 按执行频率排列
case
语句
5、循环控制
循环控制需要遵循以下原则确保代码可靠性
- 合理分层循环结构控制在3层以内
- 循环控制变量采用半闭半开区间
- 禁止在循环内修改循环变量
for
循环适合放置较为稳定的控制变量
四、特殊关键字规则
以下关键字需要特别关注
1、goto
语句
推荐避免使用goto
,属于低级指令,易导致代码难于维护
2、void
类型函数
- 用于不需要返回值的函数声明
- 参数及返回值均不得返回
void
类型指针 - 返回
void
需使用return
终止
3、const
限定符
- 用于只读变量和常量保护
- 可用于函数参数避免修改
- 不可用于递增区间体积
4、volatile
关键字
- 用于保证对特殊地址的稳定访问
5、extern
标识
- 用于标识外部定义的变量或函数
五、结构和并发编码规范
多核程序编写需注意事项
1、结构体和并发
- 结构体适用于将多个数据元素聚合处理
- Union适用于频繁不同时用于同一空间的数据
2、枚举类型
- 非赋值枚举变量可从被赋值开始递增
- 一般枚举常数不支持调试
3、重定义符号
typedef
用于给现有类型创建别名,不支持类型扩展
以上为主要技术规范,需在具体开发中兑现和遵守
发表评论
最新留言
做的很好,不错不错
[***.243.131.199]2025年04月24日 20时23分55秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
VTK:可视化之RandomProbe
2019-03-09
block多队列分析 - 2. block多队列的初始化
2019-03-09
Java时间
2019-03-09
不编译只打包system或者vendor image命令
2019-03-09
MySQL
2019-03-09
The wxWindows Library Licence (WXwindows)
2019-03-09
leetcode——第203题——虚拟头结点
2019-03-09
【编程】C语言入门:1到 100 的所有整数中出现多少个数字9
2019-03-09
MySQL----基础及常用命令
2019-03-09
模拟集成:MOS管的工作区小误区(简单版)
2019-03-09
flink启动(二)
2019-03-09
前端开发进阶手册.pdf
2019-03-09
软件架构设计和MESH经验之谈
2019-03-09
redis持久化分析
2019-03-09
打开word时424错误
2019-03-09
如何添加开机自启项
2019-03-09
❤️一个18k运维项目经验这样做的,offer到碗里来❤️
2019-03-09
关于宝塔面板安装的mysql用Navicat连接出现2003的错误解决
2019-03-09
Windows2016 FTP用户隔离
2019-03-09
js传入参数是中文的时候出现 “******”未定义错误
2019-03-09