首页 > 试题广场 >

在C语言中,关于静态变量的说法,正确的是( )。

[单选题]

C语言中,关于静态变量的说法,正确的是()

  • 静态变量和常量的作用相同
  • 函数中的静态变量,在函数退出后不被释放
  • 静态变量只可以赋值一次,赋值后则不能改变
  • 静态全局变量的作用域为一个程序的所有源文件
B选项不严谨,主函数退出会释放
发表于 2020-04-16 20:44:42 回复(0)
作用域为当前文件,从定义/声明位置到文件结尾。动态全局变量可以通过extern关键字在外部文件中使用,但静态全局变量不可以在外部文件中使用。静态全局变量相当于限制了动态全局变量的作用域。
发表于 2019-02-21 15:57:44 回复(0)
1、静态变量作用当前文件,常量可以作用整个工程;
2、静态变量,普通变量在函数退出后都会被释放;
3、静态变量也是变量,可以再次赋值;
4、静态变量作用当前文件
发表于 2022-02-16 21:10:22 回复(1)
作用域:静态变量的作用域为定义静态变量的当前文件,从定义/声明位置到文件结尾。常量的作用域可以是一整个工程。
引用动态全局变量可以通过extern关键字在外部文件中使用,但静态全局变量不可以在外部文件中使用。静态全局变量相当于限制了动态全局变量的作用域。
赋值与释放:静态变量并不是说其就不能改变值,不能改变值的量叫常量。 其拥有的值是可变的 ,而且它会保持最新的值。说其静态,是因为它不会随着函数的调用和退出而发生变化。即上次调用函数的时候,如果我们给静态变量赋予某个值的话,下次函数调用时,这个值保持不变。
主函数退出后可能会释放。
存储方式:静态变量属于静态存储方式,其存储空间为内存中的静态数据区(在 静态存储区内分配存储单元),该区域中的数据在整个程序的运行期间一直占用这些存储空间(在程序整个运行期间都不释放),也可以认为是其内存地址不变,直 到整个程序运行结束(相反,而auto自动变量,即动态局部变量,属于动态存储类别,占动态存储空间,函数调用结束后即释放)。
所有的全局变量都是静态变量,而局部变量只有定义时加上类型修饰符static,才为局部静态变量。
注:静态变量可以在任何可以申请的地方申请,一旦申请成功后,它将不再接受其他的同样申请。

发表于 2021-09-06 15:52:40 回复(0)
A.不一样,常量的作用域可以是整个工程,而静态全局变量的作用域只能在其定义的源文件
C.静态变量的值是可以改变的
D.同A
发表于 2020-02-14 14:27:10 回复(0)
函数中的静态变量是静态局部变量,函数退出后不被释放,在程序运行结束时(或者主函数退出时)才释放,只在函数中可访问。 静态全局变量的作用域只能是定义它的文件里,不能被其他文件使用。
发表于 2020-12-17 16:47:08 回复(0)

A 常量在程序运行期间其值是不可修改的,而静态变量可以被修改。

B函数中的静态变量在第一次调用时被初始化,并在以后的函数调用中保持其值,直到程序退出,静态变量才被销毁。这样,静态变量可以用于保持函数内部状态,即使函数退出,其值也是可靠的。

C 静态变量只会在程序运行的时候初始化一次。当程序第一次执行到定义静态变量的代码时,该静态变量就会被初始化。之后每次调用函数,该静态变量都会保持上一次调用的值,而不会再次初始化。

D 静态全局变量的作用域仅限于定义它的源文件,在其他源文件中是无法直接访问该静态全局变量的。

编辑于 2023-11-30 19:09:45 回复(1)
d选项也不对啊,只能是本文件从声明到结束啊
发表于 2020-02-09 00:04:58 回复(1)