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 。导致产生“野指针”。
- c语言编程规范
- C 语言编程 规范
- C语言编程规范
- C语言编程规范
- C语言编程规范
- C语言编程规范
- c语言编程规范
- c语言编程规范
- C语言编程规范
- C语言编程规范
- C语言编程规范
- C语言编程规范
- C语言编程规范
- C语言编程规范
- C语言编程规范
- C语言编程规范
- C语言编程规范
- C语言编程规范
- jquery each()循环输出每个值
- ViewPager的PagerAdapter适配器使用
- AndroidMainfest.xml
- 实战DeviceIoControl 之二:获取软盘/硬盘/光盘的参数
- 【数据库】图书管理系统
- c语言编程规范
- 用maven整合struts+spring+hibernate之一 用maven创建基础的web应用
- C#分割字符串的几种方法
- CSS3 Media Queries(响应式布局)
- MTP in Android
- You have an error in your SQL syntax; check the manual that corresponds to your MySQL server versi
- 如何让EditText没有边框
- UVa 10755 - Garbage Heap 最大子块和 dp
- Android opengl基础知识