C

来源:互联网 发布:风暴大陆战盾进阶数据 编辑:程序博客网 时间:2024/05/24 03:16

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.注释

  /*.....*/=》空格。不能嵌套,/*总与最近的*/匹配。编译器只要遇到/*,即视为注释的开始。

 代码与注释应该一致。全局数据(常量、变量)的定义要注释。