首页天道酬勤静态变量的作用域,以下不是c语言的特点的是

静态变量的作用域,以下不是c语言的特点的是

张世龙 05-06 03:48 95次浏览

静态变量属于静态存储方式,但属于静态存储方式的量不一定是静态变量。 以下是关于静态变量使用方法的内容,通过学习或小编进行了整理。 请喜欢。

使用静态变量

静态变量也可以用于存储常数。 具体而言,静态变量(全局变量和组件语言中定义的符号也是如此)可以用const、constant或final等关键字标识。 在这种情况下,该值在编译时)设置,不能在运行时更改。 编译器通常将静态常量与文本一起放置在目标文件的文本区域中,而非经常性初始化数据放置在数据区域中。 如果需要,某些编译器还可以打开专用区域。 也可以在此区域中启用内存保护机制,以防止错误的指针复盖常量变量。

静态变量的概念定义

术语“静态变量”有两个容易混淆的定义。

与语言无关的通用定义:具有与程序相同生命周期(英语: Object lifetime )的变量;

特定于c族语言的定义:在静态存储类中声明的变量。

在许多以Pascal为代表的程序语言中,所有局部变量都由系统自动分配存储空间,所有全局变量的存储空间都是静态分配和检索的。 对应于“静态变量”。 因此,实际上术语“局部变量”和“全局变量”足以涵盖所有情况,因此这些程序语言通常不使用术语“静态变量”,而直接称为“全局变量”,通常指目前,术语“静态变量”的概念主要基于c族语言对“静态”的定义,即定义2。

静态变量的特征

静态局部变量是静态存储方式,具有以下特征:

)1)静态局部变量在函数中定义,但在调用时存在,如自动变量,在退出函数后消失。 静态局部变量始终存在意味着生存期是整个源程序。

)2)静态局部变量的生存期为整个源程序,但作用域与自动变量相同。 也就是说,只能在定义该变量的函数内使用该变量。 退出函数后,变量仍然存在,但不能使用。

(3)允许对结构系统的静态局部量给出初始值。 如果未分配初始值,则由系统自动分配。 数值类型变量自动分配初始值0,字符类型变量分配空字符。

)4)基本型静态局部变量在说明时未赋予初始值时,系统自动赋予0值。 如果不对自动变量分配初始值,则该值不确定。 静态局部变量的特点表明,生存期是整个源文件的量。 离开定义的函数后不可用,但如果再次调用定义的函数,则可以继续使用。 它还保存上次调用后剩下的值。 因此,如果需要多次调用函数并在调用之间保留特定变量的值,请考虑使用静态局部变量。 虽然全局变量也可以实现上述目的,但建议使用局部静态变量,因为全局变量可能会导致意外的副作用。

静态变量的不同作用

将变量声明为静态存储类不仅显式标识变量的生命周期(Object lifetime,也取决于变量的属性)。

对于静态全局变量,静态声明的某个源文件的文件级变量和函数范围仅限于文件中(即“内部连接”),因此可以用于限制变量的范围。

对于静态局部变量,在函数中用静态声明的变量与自动局部变量的范围相同,但范围都限制在函数内。 但是,由于是通过静态分配而不是默认的自动分配检索的,所以存储空间所在的空间不同。 (对于自动分配,存储空间分配给调用堆栈,仅在调用时分配和释放),并且变量在两次调用之间始终匹配。

对于静态成员变量(英语: Member variable ),在c中,在类定义中用静态声明的成员变量属于类变量(英语: Class variable ),也就是说,由所有类实例共享。 相反,流程变量)也称为实例变量。 )英语:实例可变

看过《静态变量有什么特征》的人又看了看:

c语言静态变量的特点,静态变量初始化只初始化一次吗