一、局部变量和全局变量
1、局部变量:定义在函数内部的变量,只在本函数范围内有效;
全局变量:定义在函数之外定义的变量,它的有效范围是从变量定义开始到本源文件结束;
2、标识符的作用域
(空间角度)全局作用域 / 局部作用域
如果全局变量没有被初始化,值一定是0;形参,局部变量具有局部作用域。
(生存期)静态生存期 / 动态生存期
静态生存期:某个变量的生存期和程序运行周期相同(全局变量,static局部变量),同样如果static局部变量没有被初始化,值也一定是0.
动态生存期:变量的生存期和程序运行周期不相同,比如局部变量或者在栈区里的变量
3、可见性:在程序运行到某一点时是否可见
(变量)标识符必须先定义再使用;
同一作用域当中,不得出现同名标识符;
在没有包含关系的不同作用域中定义的同名标识符,互不影响;
在两个或多个具有包含关系的作用域中定义的同名标识符,外层标识符在内层不可见。
4、auto变量,自动为变量分配、销毁空间
5、register变量:变量的空间开在寄存器内,register变量不能取地址(寄存器本身不能寻址)。
6、extern:用extern声明外部变量, 外部变量是在函数的外部定义的全局变量,它的作用域是从变量的定义处开始,到本程序文件的末尾。
7、预处理
不带参宏定义:#define N 10;宏名通常都是大写 gcc -E -omain.i main.c(只做预处理命令不编译,到main.i) 所有的预处理命令,都是文本替换,不计算;预处理命令后不加分号。
#define M
Print(“%d\n”,__LINE__);打印行数
Print(“%d\n”,__FILE__);打印文件名
带参宏定义#define ADD(a, b) a + b
8、#include< > 标准库函数
#include” ” 自己写的头文件,
头文件尽量包含在源文件里。
9、头文件编写格式: