控制流
略
函数
-
一个程序可以保存在一个或者多个源文件中,各个文件可以单独编译,并可以与库中已编译过的函数一起加载.
-
函数默认返回值类型是int.
-
函数在源文件中出现的次序可以是任意的.
-
函数声明可以包含参数,也可以不包含.
-
如果没有声明,会隐式声明返回int,并不对参数做任何猜测.
作用域
-
外部变量或函数的作用域从声明它的地方开始.到文件末尾结束.
-
如果要在外部变量定义之前使用该变量,或外部变量定义与使用不在同一个源文件中,需要在生命中强制性使用extern
-
声明与定义区分开很重要,声明用于说明变量属性,定义将引起存储器分配
- 这个叫定义
int sp;
double val[MAXVAL];
- 这个叫声明
extern int sp;
extern double val[];
-
外部变量只可以定义一次,但可以声明若干次访问它.
- 定义变量的源文件,也可以声明该变量.
头文件
一堆声明. 剩下的由编译器完成链接.
静态变量
所在源文件可以共享,但并不想共享给所有源文件.
static char buf[BUFSIZE];
static int bufp = 0;
// 声明和定义一起了.
-
如果声明静态函数,则类似于私有函数.只能够由当前文件访问.
-
static 出现在函数中,会让局部变量一直占据内存. – 还没太想明白具体用法.是不是可以实现类似闭包的功能.
寄存器变量
register int x;
register char c;
-
告诉编译器,将该变量一直放在cpu的寄存器中,编译器可以忽略此选项.
-
只可以应用在局部变量和形参中.
-
寄存器变量的地址是无法访问的.