c语言编程规范

来源:互联网 发布:假面骑士淘宝网 编辑:程序博客网 时间:2024/05/22 14:37

文件开头处的版权和版本的声明

/* 

* Copyright (c) 2013,宁波普天通信技术有限公司 
* All rights reserved. 
*  
*  文件名称:filename.h 
*  文件标识:见配置管理计划书 
*  摘     要:简要描述本文件的内容 
*  
*  当前版本:1.1 
*  作     者:输入作者(或修改者)名字 
*  完成日期:2001年7 月20日 

*  取代版本:1.0   
*  原作者   :输入原作者(或修改者)名字 
*  完成日期:2001年5 月10日 

*/ 

头文件.h

(1)文件开头处的版权和版本的声明

(2 )预处理块。 

(3 )函数和类结构声明等。

注意事项:1、头文件只存放“声明”,而不存放“定义”  2、不提倡使用全局变量

.c文件


写代码注意事项:

1、尽可能在定义变量的同时初始化该变量。(就近原则)

2、象if 、for、while等关键字之后应留一个空格再跟左括号‘(’,以突出关键字。同时函数名之后不要留空格,紧跟左括号‘(’,以与关键字区别。

3、赋值、比较、算术、逻辑和位域等二元操作符前后要加空格。
如“= ”、“+=”  “>=”、“<=”、“+ ”、“* ”、“% ”、“&&”、“|| ”、“<<”, “^ ”等二元
操作符的前后应当加空格。
4、程序中不要出现标识符完全相同的局部变量和全局变量,尽管两者的作用域不同而不会发生语法错误,但会使人误解。

5、函数名用大写字母开头的单词组合而成。

6、静态变量加前缀s_ (表示static)

7、如果不得已需要全局变量,则使全局变量加前缀g_(表示global )。

8、使用if (NULL == p)  这样古怪的格式if(0 == p)可以利用NULL和0不能被赋值防止出现if(p = NULL)和if(p = 0)的情况。


循环语句的效率:

在多重循环中,如果有可能,应当将最长的循环放在最内层,最短的循环放在最外层,以减少CPU跨切循环层的次数。


c语言#define常量和const常量

const常量比#define常量的优点:

(1 ) const 常量有数据类型,而宏常量没有数据类型。编译器可以对前者进行类型安全检查。而对后者只进行字符替换,没有类型安全检查,并且在字符替换可能会产生意料不到的错误(边际效应)。 
(2 ) 有些集成化的调试工具可以对const 常量进行调试,但是不能对宏常量进行调试。

const用法:如果参数是指针,且仅作输入用,则应在类型前加const,以防止该指针在函数体内被意外修改。


c语言 内存管理:

内存分配方式:

内存分配方式有三种: 
(1 ) 从静态存储区域分配。内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。例如全局变量,static 变量。 
(2 ) 在栈上创建。在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放。栈内存分配运算内置于处理器的指令集
中,效率很高,但是分配的内存容量有限。 
(3 ) 从堆上分配,亦称动态内存分配。程序在运行的时候用 malloc 或new 申请任意多少的内存,程序员自己负责在何时用 free 或delete 释放内存。动态内存的生存期
由我们决定,使用非常灵活,但问题也最多。 

常出现的错误和预防方法:

1、内存分配未成功,却使用了它。要意识到内存分配会不成功。常用解决办法是,在使用内存之前检查指针是否为 NULL 。

2、内存分配虽然成功,但是尚未初始化就引用它。无论用何种方式创建数组,都别忘了赋初值,即便是赋零值也不可省略,不要嫌麻烦。

3、内存分配成功并且已经初始化,但操作越过了内存的边界。特别是在for 循环语句中,循环次数很容易搞错,导致数组操作越界。

4、忘记了释放内存,造成内存泄露。动态内存的申请与释放必须配对,程序中malloc 与free 的使用次数一定要相同。(new/delete同理)

5、释放了内存却继续使用它。 

(1 )程序中的对象调用关系过于复杂,实在难以搞清楚某个对象究竟是否已经释放了内存,此时应该重新设计数据结构,从根本上解决对象管理的混乱局面。 
(2 )函数的return 语句写错了,注意不要返回指向“栈内存”的“指针”或者“引用”,因为该内存在函数体结束时被自动销毁。 
(3 )使用free 或delete 释放了内存后,没有将指针设置为 NULL 。导致产生“野指针”。

原创粉丝点击