C和指针day2

89 阅读2分钟

第四章 语句

空语句

;

表达式

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 ...
}