第四章 语句
空语句
;
表达式
a = b + 10;
代码块
{
...
}
if语句
if(expression)...else...
while语句
while(expression)...break:打断continue:跳过
for语句
for(语句1;语句2;语句3)...for循环在进入循环前,会判断语句2是否为真才进入循环否则直接跳出
do语句
do{...}while(语句)
switch语句
switch(变量)case 值: ...;break;default:....;break;
goto 语句
goto 标签A;...标签A : ...
第五章 操作符和表达式
操作符
算术符
+ - * / %
移位符
<< 、>>a<<-5 //此时会出现什么操作要看编译器如何处理
位操作符
AND、OR、XOR(异或)、~
赋值操作符与复合赋值符
=、+=、-=、*=、/=、%=、<<=、>>=、&=、^=、|=
单目操作符
!、 ++、 - 、& 、sizeof 、~、 -、 +、 *、 (类型)
关系操作符
>、>=、<、<=、!=、==
逻辑操作符
&&、、!
条件操作符
条件 ?语句1:语句2;
逗号操作符
语句1,语句2,语句3...while(a>0){...;a = get_value();count_value(a);}相等于下面的操作:while(a = get_value(),count_value(a), a>0){...}
布尔值
#define FALSE 0#define TRUE 1
左值和右值
a=b+c;
表达式求值
求值应考虑操作符的优先级,最好加上括号区分
第六章 指针
内存和地址
bit 能体现的值的范围太小,通常将许多位合成一组作为一个单位。一个字节 = 8bit通常若干个字节组成一个“字”,字 可能由 2 或者 4 个字节组成。
值和类型
不能通过存储中的值判断是什么类型。
指针变量的内容
变量的值就是分配给该变量的内存位置所存储的数值。
间接访问操作符
未初始化和非法的指针
int *a;*a = 12;//野指针 不知道指向的是何处NULL指针
指针的指针
*解地址&取地址int a = 10;int *pa = &a;int **ppa = &pa;
第七章 函数
函数定义
函数的定义就是函数体的实现function_name(){...return (语句) ;//括号可加可不加}一般空的函数体只是为了存根
函数声明
int *find_int(int key,int array[] ,int array_len)此种方式属于旧格式,由于是分开两行,编译器只记住函数的返回类型。
函数参数
C函数的所有参数均以传值的方式进行传递
ADT和黑盒
抽象数据类型(ADT)黑盒子:int find_entry(char const * name_to_find)//查找对应的数组下标char const * lookup_address(char const *name)char const * lookup_phone(char const *name)//上面两个函数通过调用 find_entry 查找下标即可返回对应的地址和手机号
递归
递归可实现将字符串 www.baidu.com 输出为 com.baidu.www
可变参数列表
stdarg.h中由三个宏:va_start , va_arg , va_end
average ( int n_values,...)
{
va_list var_arg;
/*准备访问可变参数*/
va_start(var_arg,n_values);
/*添加取自可变参数列表的值*/
for(count = 0;count < n_values;count ++){...}
/*完成*/
va_end(var_arg);
return ...
}