作用域 :变量能够使用的范围
生存周期:从变量被分配空间到回收
局部变量:作用域在该变量定义的大括号类,没有初始化之前值随机,执行到变量定义时开辟空间,超过作用域范围回收
全局变量:作用域在全局均可以使用
内存模型
栈区(Stack):局部变量,没有初始化之前值随机,执行到变量定义时开辟空间,超过作用域范围回收
堆区(Heap):new,malloc realloc 分配的内存区,需要手动释放。
全局(Global Area)(静态存储)区:未经初始化前值为0,编译的时候开辟空间,程序结束回收变量空间
存放已初始化全局变量,静态变量
未初始化全局变量,静态变量
常量区:存放字符串常量,10 ,“qewe”
代码区(Code Area)
关键字
1.auto(默认)
自动型变量(局部变量)
int num;
auto int num;
2.register
寄存器变量
如果寄存器存满了,则放到栈区,等价于auto
3.extern
外部存储
声明一个变量是外部存储的变量
声明外部存储的函数
定义:之前变量不存在,定义该变量为变量分配内存空间
声明:之前变量存在,在这里使用
不用包含头文件,只使用其他文件少量函数或变量使用;
4.static
静态变量
1.修饰变量,该变量成为静态变量
未经初始化,值为0
在编译时分配内存空间
程序结束回收空间
2. 限定变量或者函数只能在本文件中使用,使用extern也不行
3.防止多文件中全局变量函数重名(作用域)