C语言编程规范

一、头文件编程规范

三大原则——设计层面:

1、头文件中适合放置接口声明,不适合放实现
2、头文件职责单一
3、头文件应向稳定的方向包含

八项规则——编码层面:

1、只能通过包含头文件的方式使用其他模块提供的接口,禁止在.c中通过extern的方式使用外部函数接口、变量
2、禁止在头文件中定义变量
3、禁止在extern“C”中包含头文件
4、总是编写内部的#ifdef保护符
5、头文件应当自包括
6、禁止头文件循环依赖
7、禁止包含用不到的头文件
(否则多次包含该头文件会有变量重复定义的错误);
头文件的包含关系代表一种依赖,头文件变化会引起包含该文件的模块重新编译;
8、每一个.c文件应有一个同名.h文件,用于声明需要对外公开的接口

二、函数编程规范

为什么需要函数

1、降低复杂度,易于思考
2、便于协同开发
3、代码复用,减少代码量
4、封装变化
5、良好的可移植性

函数规范

1、圈复杂度小于7
圈复杂度就是一个函数可以执行的路径条数;
2、函数短小(推荐小于50行,一屏)
3、嵌套层数小于5
单行字符数小于80个,一屏;
4、职责单一
接受函数名的约束,避免文不对题;
5、抽象层次单一
避免读者迷失在细节;
6、参数不超过3个
7、避免重复
8、避免重入问题
时间上,在函数执行完之前,又一次被调用,称为重入;只有在函数中有对公共资源访问的时候,才会有问题;
9、不要返回局部变量

三、语法规范

命名、注释、格式、效率、安全   
内存划分与管理


C语言中内存堆和栈的区别

详见博客:http://www.cnblogs.com/myblesh/archive/2012/03/14/2396409.html

一般情况下程序存放在Rom(只读内存,比如硬盘)或Flash中,运行时需要拷到RAM(随机存储器RAM)中执行,RAM会分别存储不同的信息,如下图所示:

 

 

内存中的栈区处于相对较高的地址以地址的增长方向为上的话,栈地址是向下增长的。

栈中分配局部变量空间,堆区是向上增长的用于分配程序员申请的内存空间。另外还有静态区是分配静态变量,全局变量空间的;只读区是分配常量和程序代码空间的;以及其他一些分区。

例如,如下main.cpp

int a = 0; //全局初始化区 
char *p1; //全局未初始化区 
main() 
{ 
int b; //栈 
char s[] = "abc"; //栈 
char *p2; //栈 
char *p3 = "123456"; //123456\0在常量区,p3在栈上。 
static int c =0; //全局(静态)初始化区 
p1 = (char *)malloc(10); //堆 
p2 = (char *)malloc(20); //堆 
}
复制代码

四、C语言常见问题

1、堆常见问题


2、栈常见问题


3、类型转换

类型转换是用来欺骗编译器的,不会改变内存中的数据;

4、整数溢出
5、字节对齐

自己设计的数据结构时,要与字节对齐无关;

6、字节序

7、危险的字符串操作


  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值