一、局部变量与全局变量
1、全局变量:静态存储
2、局部变量:
非static -> 动态存储
static -> 静态存储
二、动态存储
在程序运行时,对变量动态地分配内存。当变量所在函数退出时,释放空间。
三、静态存储
在程序运行时,对变量静态地分配内存。当变量所在函数退出时,不释放空间。当程序退出时,释放空间。
(即,下次调用时,这个变量的数据是上一次调用结束时的数据,且不再另分配内存)原理-_-
四、变量的四种类型
1、auto
auto int a 等效于 int a
退出函数时自动释放空间
2、register
将变量存放在寄存器中,而不是平常的内存中,当需要多次使用这个变量时,可以节省时间。
是建议性,不是强制性。只有频繁使用变量才会存放在寄存器中。同时,许多编译系统可以在没有定义register类变量的情况下,自动将使用频繁的变量存放在寄存器中
3、extern
声明外部变量/函数
如果在某个函数中需要使用外部变量(如果需要使用全局变量,而全局变量在该函数以下定义 | 或者如果需要使用别的文件的变量),需要声明
例:extern int a;
注意:如果这个变量没有在全局中声明,那么每一个需要使用到该变量的函数都需要声明(表达能力太差,自行理解)
函数同理,函数也可以在某个函数中声明
4、static
分两类
1)局部变量
假设用在某函数中,当它第一次被调用时,需要分配内存。当它下一次被调用时,使用同一个变量使用上一次所分配的内存与数据。
2)全局变量
如果以static定义,那么在其他文件中,不可声明这个变量,但可以用static定义一个与该变量名相同的变量,且互不影响。
函数同理