首页 > 试题广场 >

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

[单选题]
在C语言中,关于静态变量的说法正确的是()
  • 静态变量和常量的作用相同
  • 函数中的静态变量,在函数退出后不被释放
  • 静态变量只可以赋值一次,赋值后则不能改变
  • 静态全局变量的作用域为一个程序的所有源文件
此题主要考察static局部变量相关知识:
1、静态变量在内存的静态存储区,静态数据一直占有着该存储区单元直到程序结束;
2、静态局部变量只声明一次,一旦申请内存成功,不再接受重复申请;
3、静态局部变量的作用域与一般局部变量一样,二者区别在于以上两点:一般局部变量在函数调用结束后释放变量占用的存储单元,而静态局部变量不释放。
注意:由于静态局部变量在内存中存在的时间较长,即占用内存时间较长,故应尽量少用static来修饰变量(有刚需除外)。
发表于 2016-10-10 21:05:51 回复(0)
不太清楚了
发表于 2016-01-10 22:10:28 回复(3)
来自@康斯坦丁

此题主要考察static局部变量相关知识:
1、静态变量在内存的静态存储区,静态数据一直占有着该存储区单元直到程序结束;
2、静态局部变量只声明一次,一旦申请内存成功,不再接受重复申请;
3、静态局部变量的作用域与一般局部变量一样,二者区别在于以上两点:一般局部变量在函数调用结束后释放变量占用的存储单元,而静态局部变量不释放。
注意:由于静态局部变量在内存中存在的时间较长,即占用内存时间较长,故应尽量少用static来修饰变量(有特别需要除外)。

来自@viser_zj

A.静态变量值可以改变,与常量不同(错)
B.函数内的静态变量有全局生命周期,有记忆性(对)
C.静态变量赋值后可以改变(错)
D.静态全局变量的作用域为单个源文件(错)
发表于 2017-06-14 20:05:49 回复(0)
如果静态变量定义在函数中
则函数退出后,静态变量并不释放,等下次再调用该函数时,这个变量的值还是刚才那个
发表于 2015-11-17 15:49:32 回复(0)
函数中的静态变量是静态局部变量 函数退出后不被释放 在程序运行结束时才释放。只在函数中可访问。
静态全局变量的作用域只能是定义它的文件里,不是被其他文件使用。
发表于 2016-03-18 11:19:30 回复(0)
A.静态变量与常量作用不同:
static:改变生命周期和限制作用域
    (1)作用于变量
    (2)作用与函数
const:"只读"
     (1)定义常量
     (2)修饰指针
     (3)修饰函数中的参数和返回值
B.函数中的静态变量:用static声明,使变量成为静态局部变量,编译时就为变量分配内存,直到程序退出时释放内存,在函数结束后不会被释放
C.静态变量只进行一次初始化,但是它的值是可以改变的,也就是说可以被赋值
D.static静态全局变量只能在定义它的文件中使用
所以正确答案为B

发表于 2017-08-11 11:45:54 回复(1)
static定义的静态变量分为两种,一种是修饰局部变量,一种是修饰全局变量或者函数
用法也完全不同(主要体现在作用域,链接属性上面),但是有一点是确定的,如果是有初始值的static变量则分布在.data段,未初始化的static变量则分布在.bss段上面,他们的生命周期都是整个程序结束时才释放
发表于 2015-12-23 19:40:33 回复(0)
静态变量存储在全局存储区,直到程序结束后才会被释放,只进行一次初始化,以后的值是上一次使用过后的值,也即是可变的,而变量是不可变的,A错,静态全局变量是为本源文件共有,全局变量的作用域才是程序的所有源文件!
发表于 2016-06-24 17:19:03 回复(0)
看来你在学习C语言呢,让我来帮你分析一下关于静态变量的这几个选项吧! A. 静态变量和常量的作用相同 • 这个说法是不对的哦。静态变量和常量是有区别的。静态变量在程序的执行期间会一直存在,并且保持其值,直到程序结束或者再次被显式地改变。而常量一旦定义,其值就不能被改变(当然,有些编程语言支持用const定义的常量在某些情况下可以被编译器优化为非常量,但那是另一回事了)。 B. 函数中的静态变量,在函数退出后不被释放 • 这个说法是正确的!函数中的静态变量(也称为静态局部变量)在函数第一次被调用时初始化,并且在整个程序运行期间只会被初始化一次。即使在函数执行完毕后,静态局部变量也不会被销毁,它会保持其值,直到下一次函数调用或者程序结束。这意味着,如果你在函数中多次调用并修改这个静态变量的值,它的值会在函数调用之间保持。 C. 静态变量只可以赋值一次,赋值后则不能改变 • 这个说法是错误的。静态变量(无论是局部的还是全局的)都可以被多次赋值和修改。它们的“静态”特性仅指它们在程序的生命周期内持续存在,而不是指它们的值不可变。 D. 静态全局变量的作用域为一个程序的所有源文件 • 这个说法也是不准确的。静态全局变量(用static关键字修饰的全局变量)的作用域被限制在定义它的源文件内。这意味着,虽然它在整个程序的生命周期内都存在,但其他源文件无法访问它。如果你想让一个全局变量在所有源文件中都可见,你应该去掉static关键字,或者使用extern关键字在其他源文件中声明它。 所以,正确的答案是B哦!希望这样解释能帮助你更好地理解静态变量的概念! 来自文心一言
发表于 2024-11-22 08:16:32 回复(0)
🐮
发表于 2020-12-15 16:47:27 回复(0)
静态变量可以被赋值。
发表于 2020-08-21 16:05:05 回复(0)
A.静态变量与常量作用不同: static:改变生命周期和限制作用域 (1)作用于变量 (2)作用与函数 const:"只读" (1)定义常量 (2)修饰指针 (3)修饰函数中的参数和返回值 B.函数中的静态变量:用static声明,使变量成为静态局部变量,编译时就为变量分配内存,直到程序退出时释放内存,在函数结束后不会被释放 C.静态变量只进行一次初始化,但是它的值是可以改变的,也就是说可以被赋值 D.static静态全局变量只能在定义它的文件中使用 所以正确答案为B
发表于 2020-06-11 23:48:37 回复(0)
如果在本文件里没有加上static声明变量,那么该变量属于外部链接性,就是在其他的源文件中只要加上extern声明就可以使用该变量;如果在本文件里加上static声明变量,那么这个变量属于内部链接性,作用域是本文件;如果在函数内部用static声明变量,那么该变量属于无链接性,作用域是该函数。

发表于 2020-02-04 15:37:06 回复(0)
为什么啊
发表于 2019-09-07 23:41:09 回复(0)
静态变量,函数退出后不释放
发表于 2019-05-10 10:37:45 回复(0)
发表于 2018-10-19 08:35:19 回复(0)
全局变量:单文件全局变量,所有文件全局变量(extern)
发表于 2018-03-11 19:04:36 回复(0)
函数中的静态变量是静态局部变量 函数退出后不被释放 在程序运行结束时才释放。只在函数中可访问。 静态全局变量的作用域只能是定义它的文件里,不是被其他文件使用。
发表于 2017-01-18 21:03:30 回复(0)
常量 const 符号表中 取地址时可得到副本,修改其副本不会修改常量
静态变量 static 静态区 生命周期整个文件
外部变量 extern 也是静态区 在函数外声明的变量不加特殊说明为外部变量 可使用extern声明一个外部变量
编辑于 2016-06-19 20:55:59 回复(0)
static根据不同的上下文有不同的含意:
1.当用于文件作用域时,static意味着“限制函数或变量的可见性”,即只有本cpp文件才能使用该变量或函数。
2.当用于函数作用域时,static意味着“全局生命周期,第一次运行到时初始化,仅在本函数内可见”,即变量有记忆性。
3.当用于类声明时,static意味着“该变量非一般成员变量,所属于类,被对象共享,类似于全局变量”。
针对问题:
A.静态变量值可以改变,与常量不同(错)
B.函数内的静态变量有全局生命周期,有记忆性(条例2)(对)
C.静态变量赋值后可以改变(错)
D.静态全局变量的作用域为单个源文件(条例1)(错)
所以选B
发表于 2016-06-19 15:18:52 回复(0)