1.变量的定义 VS 声明
定义:创建对象,分配内存空间。声明:以下代码用到的变量或对象在其他地方定义,不分配内存空间
2.关键字
auto:默认缺省情况下,所有变量都是auto
register:请求编译器将变量尽可能放在register中,而不通过内存寻址访问,提高效率。register变量必须是长度《int长度的单个值。
static:
静态变量----位于静态存储区。全局变量:作用域仅限于定义该变量的文件中。局部变量:作用域为定义该变量的函数。函数运行结束,变量不销毁,下次仍可使用。
静态函数----函数的作用域限于本文件,不会与其他文件中的函数重名。
sizeof:关键字,不是函数。计算变量所占内存空间大小时,可省略括号 eg sizeof i。计算类型时,必须加括号.
void:空类型。可修饰函数返回值和参数(不接受任何参数)。void *,指向任意类型的数据。
return:不可以返回指向“栈内存”的指针,因为该内存在函数体结束时自动销毁。
const:类型修饰符。修饰只读变量,在编译时确定值。定义时不分配内存空间,保存在符号表中。程序运行中放在静态区,只有一份拷贝。可修饰一般变量,数组,指针(先忽略类型名,看const离* or p近,离谁近就修饰谁),函数参数,函数返回值。
volatile:类型修饰符。它修饰的变量可被某些编译器未知的因素修改,eg OS,硬件,其他线程等。编译器不优化访问volatile修饰的变量的代码,提供对特殊地址的稳定访问。即,若变量i是寄存器变量,端口数据or多线程的共享数据,其值随时可能变化,编译器生成的汇编代码在每次使用i时要从内存中取i的值。
extern:置于变量or函数前,表示其定义在其他文件中。
struct:在网络协议、通信控制、嵌入式系统、驱动开发等中,将多种数据组合成一个整体。也可用于压缩参数个数。空结构体大小为1
3.if-else
bool v=FALSE; if(v) or if(!v)
float v=0.0;if(v>=-EPSLON)||(v<=EPSLON) EPSLON为定义好的精度
int *p;if(NULL == P) ; if(NULL != p) 防止出现if(p=NULL)
先处理正常情况,再处理异常情况。正常情况概率大,减少比较次数。提高代码可读性和性能。
4.循环
多重循环中,将长循环放在内层,短循环放在外层,减少CPU跨切循环层的次数。
for语句的循环变量的取值采用“半开半闭”eg. for(i=0;i<10;i++)。不要在循环体内修改循环变量值,防止循环失控。
循环尽可能短。循环嵌套控制在三层以内,否则重新设计循环,将循环内代码写成子函数。
5.注释
/*.....*/=》空格。不能嵌套,/*总与最近的*/匹配。编译器只要遇到/*,即视为注释的开始。
代码与注释应该一致。全局数据(常量、变量)的定义要注释。