第一章 关键字
1. 三重条件操作符
? :
2. sizeof操作符
1)用于计算对象占用内存大小
2)sizeof(int)*p表示什么意思? 若p为可计算的类型(short、int、long)则表示int所占内存大小乘以p,否则出错。
★实例:
int p = 4;
p = sizeof(int)*p; // p = 16
3. static作用:限定函数或变量作用域
1)修饰变量:全局变量(被定义的文件内使用)、局部变量(下次调用函数时,仍然使用上次变量的值)
2)修饰函数:仅限本文件内使用该函数
4. int类型:因机器不同,int等于机器字长
5. 与零值比较
1)布尔类型:if (flag); if(!flag);
2)float类型:if (val >= -EPSION) && (val<= EPSION); //EPSION为精度值
3)指针变量:if (NULL == p); if(NULL != p);
6. 空语句的最佳写法
NULL;
7. switch/case
1)每个case语句之后必须加上break,以及最后必须有default处理case以外的默认情况
2)case后面只能是整型或字符型的常亮或常量表达式
3)case情况排序:
①按字母排序
②先正常情况,后异常情况
③按执行频率,先高频,后低频
4)case后的代码最多别超过20行,多的话使用子程序或者函数
5)continue只能用在循环体中(for、while、do-while),不能用在switch
8. do、while、for
1)尽量把短循环放在外面,长循环放在里面,以减少CPU跨切循环层次数
2)for循环采用半开半闭区间为佳
for(n = 0; n< 10; n++)
3)把循环嵌套控制在三层以内
9. goto
编程水平与使用goto次数成反比,建议禁用
10. void
真正作用:对函数返回的限定,对函数参数的限定
1)函数没有返回值,声明其参数为void
2)函数无参时,声明其参数为void
3)void *为任意类型指针
4)void不能代表一个真实的变量
11. return
不能返回指向“栈内存”的指针,该内存在函数体结束时被释放。
12. const
1)const修饰的是只读变量
2)节省空间,避免不必要内存分配,同时提高效率
const:第一次分配内存,之后不用
define:替换一次分配一次内存
3)修饰一般变量、数组、指针、函数的参数,函数的返回值
4)忽略类型名,const离谁近修饰谁
5)const修饰的只读变量不能用来定义数组的维数,也不能放在case语句后
13. volatile //易变、不稳定
使编译器对该变量的代码不进行优化,从而可以提供对特殊地址的稳定访问。
14. 空结构体为1byte
15. struct
结构体内不能赋初值(因为它是一种变量类型)。
柔性数组:结构体中最后一个元素是未知大小的数组
函数体中数组为柔性数组,且结构体计算大小时,不计在内。
★实例:
typedef struct st_type
{
int i;
int a[];
}type_a; //此结构体大小恒为4byte,即使以后分配内存
16. union
大小为最大成员的字节数,且多个成员公用内存。
17. enum
enum type_name //type_name为数据类型名
{
//变量值列表
}variable_name; //variable_name为变量,取值范围在括号内
18. typedef //给变量取别名,发生在编译阶段,define是在预处理
变量名就是类型名,变量名等于新类型。