linux C 学习笔记 第三天控制流和函数

控制流

函数

  • 一个程序可以保存在一个或者多个源文件中,各个文件可以单独编译,并可以与库中已编译过的函数一起加载.

  • 函数默认返回值类型是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的寄存器中,编译器可以忽略此选项.

  • 只可以应用在局部变量和形参中.

  • 寄存器变量的地址是无法访问的.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章