首页 百科知识 静态局部变量会自动赋初值吗

静态局部变量会自动赋初值吗

时间:2022-10-20 百科知识 版权反馈
【摘要】:用存储类型标识符static定义的局部变量属于静态存储变量,其值在程序的整个执行期间始终存在,但仍属于局部变量,其值只在定义它的函数内可使用,称为局部静态局部变量。静态局部变量在编译时赋初值,如果静态局部变量在定义时不赋初值,其值为0或空串。而自动变量属于动态存储类别,占动态存储空间,函数调用结束后即释放。

7.8.3 用static声明局部变量

用存储类型标识符static定义的局部变量属于静态存储变量,其值在程序的整个执行期间始终存在,但仍属于局部变量,其值只在定义它的函数内可使用,称为局部静态局部变量。静态局部变量在编译时赋初值,如果静态局部变量在定义时不赋初值,其值为0或空串。

静态局部变量通常用在其值只在本函数内可用(局部性),而值在程序的整个执行期间始终存在(静态性),使得每次调用函数时可以使用上次调用函数结束时的值。

【例7-17】考察静态局部变量的值。

img320

对静态局部变量的说明:

(1)静态局部变量属于静态存储类别,在静态存储区内分配存储单元。在程序整个运行期间都不释放。而自动变量(即动态局部变量)属于动态存储类别,占动态存储空间,函数调用结束后即释放。

(2)静态局部变量在编译时赋初值,即只赋初值一次;而对自动变量赋初值是在函数调用时进行,每调用一次函数重新给一次初值,相当于执行一次赋值语句。

(3)如果在定义局部变量时不赋初值的话,则对静态局部变量来说,编译时自动赋初值0(对数值型变量)或空字符(对字符变量)。而对自动变量来说,如果不赋初值则它的值是一个不确定的值。

【例7-18】打印1~5的阶乘值。

img321

程序执行结果:

img322

应该看到,局部静态变量要多消耗存储空间,而且降低了程序的可读性,因此,如不是十分必要,应尽量避免使用静态局部变量。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈