1.动态存储方式与静态存储方式
静态存储方式:在程序的运行期间,系统对变量分配固定的存储空间.
动态存储方式:在程序运行期间,系统对变量动态的分配存储空间.
存储空间:
1.程序区
2.静态存储区
3.动态存储区
全局变量全部存放在静态存储区,在程序开始执行的时候给全部变量分配存储单元,程序执行完毕就释放空间,在程序执行过程中他们占据固定的存储单元,而不是动态的进行分配和释放.
动态存储区主要存放以下数据:
1.函数形式参数:在调用函数的时候给形参分配存储空间.
2.函数中定义的变量(未加static声明的局部变量.)
3.函数调用是的现场保护和返回地址等.
以上数据,在函数调用开始时分配动态存储空间,函数调用结束时释放空间,所以在函数被调用两次的情况下,变量的地址可能不相同.
静态局部变量:
1.在静态存储区内分配存储单元,在程序的整个运行期间都不释放.
2.静态局部变量是在编译时赋初值的,即值赋初值一次,以后每次调用函数时不再重新赋初值么事保留上一次函数调用结束时的值.如果在定义静态局部变量是没有进行赋初值,则编译时自动赋值0或者空字符.
3.静态函数在函数调用结束后仍然存在,但是对其他函数是不可见的,其它函数不可调用.
内部函数:
如果一个函数只能被本文件中其他函数所调用,称之为内部函数.
static int fun(int a)
外部函数:在函数收不加上extern,表示是外部函数,可供其它函数调用.
extern int fun(int a)
我们平时写的函数均被默认成是外部函数.