函数内定义static变量,函数内的static

2023年10月9日07:59:54 发表评论 1

c语言中,函数中变量定义static有什么作用?遇到一个怪题(在线)_百度知...

1、c语言中static关键字有两个作用,一是文件作用域,二是函数作用域。

2、可以,static在C语言中是表示一个变量为静态变量的,而不是常量,也不是不可变的变量。所谓的静态变量有两种情况,一种是静态全局变量,一种是静态局部变量。

3、static 用于 文件中的 全局变量前,意思是 让该全局变量 驻留在 内存中,而不要消除。 在文件中具有连续性;用于 局部变量时,作用也是类似的。用于函数时。按照标c的说法,所有的函数都是 全局的。

4、static 用修饰符来声明的变量叫静态变量。这种变量和一般的变量不同。从程序开始到程序结束一直存在。局部静态变量。是在函数内部声明的静态变量。局部静态变量的值有一个特性,它会保存你操作的结果。

5、C语言中提供了存储说明符auto,register,extern,static说明的四种存储类别。四种存储类别说明符有两种存储期:自动存储期和静态存储期。其中auto和register对应自动存储期。

6、static只是指定将其存储在静态存储区。

函数内定义static变量,函数内的static

若函数内定义变量的存储类别是static,该变量被称为什么是静态变量?

1、static称为静态变量。根据变量的类型可以分为静态局部变量和静态全程变量。 静态局部变量 它与局部变量的区别在于: 在函数退出时, 这个变量始终存在, 但不能被其它 函数使用, 当再次进入该函数时, 将保存上次的结果。

2、这个变量的存储类型应该被说明为“静态变量”。相关介绍:对于静态全局变量来说,针对某一源文件的以static声明的文件级变量与函数的作用域只限于文件内(只在文件内可见),也即“内部连接”,因而可以用来限定变量的作用域。

3、这个全局变量只能在本文件中访问,不能在其它文件中访问,即便是extern外部声明也不可以。static修饰一个函数,则这个函数的只能在本文件中调用,不能被其他文件调用。Static修饰的局部变量存放在全局数据区的静态变量区。

4、static变量 static声明的变量为“静态局部变量”,变量内容具有持久性。该局部变量的值在函数调用结束之后不会消失,而仍然保留其原值。

5、静态局部变量始终存在着,也就是说它的生存期为整个源程序。静态局部变量的生存期虽然为整个源程序,但是其作用域仍与自动变量相同,即只能在定义该变量的函数内使用该变量。

6、这个是定义静态变量。相对的,如果用“dim”定义的就是动态变量。如果是定义静态变量的话,当事件结束后,变量的值依然是保存了过程结束时的值。

函数里的和函数外的static变量有什么区别

那么在函数内声明的静态变量和函数中的局部变量有什么区别呢?区别就是静态变量只有第一次运行函数的时候被创建,并且在函数结束的时候不会消亡;而普通的成员在函数结束的时候就会在内存中退栈消亡。

种 static 用法虽然语义完全不同,但用起来唯一的差别就是变量的作用域不同。也就是说,当源文件被编译成目标文件后,两者的差别就被完全抹平了。

但其作用域仍与自动变量相同,即只能在定义该变量的函数或语句块内使用。退出该函数或语句后,尽管该变量还存在,但其他的程序代码不能使用它,这是静态局部变与全局即外部不同之处。

存储位置不同 静态变量:存储在全局数据区(静态数据区)。非静态变量叫动态变量:存储在内存出栈数据区。生命期不同 动态变量:根据你定义的位置确定,比如你在一个函数中定义的,那么超出该函数范围变量将失效。

形式不同:静态变量是在定义的时候,有static 修饰的变量,形式为static TYPE var_name = init_value;动态变量,形式为TYPE var_name = init_value;即没有static 修饰,其中的=init_value均可省略。

在函数内部定义ststic和外部定义static变量有不同吗

1、开销上没区别。2种 static 用法虽然语义完全不同,但用起来唯一的差别就是变量的作用域不同。也就是说,当源文件被编译成目标文件后,两者的差别就被完全抹平了。

2、但其作用域仍与自动变量相同,即只能在定义该变量的函数或语句块内使用。退出该函数或语句后,尽管该变量还存在,但其他的程序代码不能使用它,这是静态局部变与全局即外部不同之处。

3、放函数里时,函数外是不可以引用的,就是说,作用域不一样。我自己的原则是:全局变量,能少尽量少,这样不容易出错。生命周期是整个程序生命期,放哪都是占用同样大小的空间。

4、形式不同:静态变量是在定义的时候,有static 修饰的变量,形式为static TYPE var_name = init_value;动态变量,形式为TYPE var_name = init_value;即没有static 修饰,其中的=init_value均可省略。

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: