标签:类型 参数 是什么 因此 不同 前缀 函数返回 为什么 static
静态存储:变量定义的时候,分配了一定的内存单元,在整个程序中,内存单元都不变.只能初始化一次,可以多次赋值,静态存储变量不初始化则初始为0.
动态存储:程序执行过程中才分配内存单元,使用完后就释放,如形参.函数的形式参数就是动态存储方式,声明函数的时候不给它分配内存单元.调用的时候传入实参,就分配内存单元,然后函数执行完后,就释放内存.动态存储变量若不初始化,则初始值为一个随机数.
全局变量包括全局变量和静态全局变量,都是静态存储,因此未初始值未0,静态局部变量是静态存储,只有动态局部变量是动态存储.
加上static前缀就是静态存储变量,如static int a = 0;
不加static前缀默认就是动态存储变量,如int b = 1;
(如果是全局变量则于是静态存储.)
动态存储区域:即存储用动态存储方式的变量的内存区域,如函数形参,没有加static前缀的局部变量(即动态局部变量),函数返回地址
静态存储区域:即存储用静态存储方式的变量的内存区域,如全局变量,静态全局变量.(没有动态全局变量)
程序区:存放程序语句.
全局变量:在所有函数外定义(包含主函数),所有函数均能调用.全局变量都是静态存储,没初始化时默认为0;
局部变量:函数内部定义,只适用于当前函数.没初始化时,若是静态存储,则为0,若是动态存储,则为随机值.
作用域相同,但内存释放周期不同.动态局部变量当函数执行结束后,就释放内存.下次在调用时又可以对其初始化.初始值为随机数.
而静态局部变量则在整个程序中都不会释放内存,下一次调用时还是上一次的值.初始值为0;
标签:类型 参数 是什么 因此 不同 前缀 函数返回 为什么 static
原文地址:https://www.cnblogs.com/just-save/p/11765474.html