全局变量是静态存储的,文件中的任何一个函数都可以改变它的值。对吗?
4个回答
展开全部
全局变量是静态存储的,文件中的任何一个函数都可以改变它的值。这是对的。
全局变量也称为外部变量,它是在函数外部定义的变量。 它不属于哪一个函数,它属于一个源程序文件。其作用域是从定义该变量的位置开始至源文件结束。
全局变量是在所有函数体的外部定义的,程序的所在部分(甚至其它文件中的代码)都可以使用。全局变量不受作用域的影响(也就是说,全局变量的生命期一直到程序的结束)。如果在一个文件中使用extern关键字来声明另一个文件中存在的全局变量,那么这个文件可以使用这个数据。
在全局变量前加一个static,使该变量只在这个源文件中可用,称之为全局静态变量,全局静态变量就是静态全局变量。在多文件组成的程序里,全局变量与全局静态变量是不同的。在某一层次声明的变量的作用域就终止于该变量所在层次的末尾。唯一的区别是全局静态变量使得该变量成为定义该变量的源文件所独享。如果在一个文件中使用extern关键字来声明另一个文件中存在的静态全局变量,这个文件也不能够使用这个数据。
全局变量也称为外部变量,它是在函数外部定义的变量。 它不属于哪一个函数,它属于一个源程序文件。其作用域是从定义该变量的位置开始至源文件结束。
全局变量是在所有函数体的外部定义的,程序的所在部分(甚至其它文件中的代码)都可以使用。全局变量不受作用域的影响(也就是说,全局变量的生命期一直到程序的结束)。如果在一个文件中使用extern关键字来声明另一个文件中存在的全局变量,那么这个文件可以使用这个数据。
在全局变量前加一个static,使该变量只在这个源文件中可用,称之为全局静态变量,全局静态变量就是静态全局变量。在多文件组成的程序里,全局变量与全局静态变量是不同的。在某一层次声明的变量的作用域就终止于该变量所在层次的末尾。唯一的区别是全局静态变量使得该变量成为定义该变量的源文件所独享。如果在一个文件中使用extern关键字来声明另一个文件中存在的静态全局变量,这个文件也不能够使用这个数据。
展开全部
首先,全局变量不可能是静态的。static 只是定义局部变量,使其在函数调用结束后不释放存储空间,使下一次调用该函数时继续使用上一次调用的结果,这点经常用到。
再者,对于全局变量来说,如果在其定义后的接下来的程序中,某函数用到了与其同名的变量,则在该变量所在函数中,全局变量被屏蔽,无法使用。
再者,对于全局变量来说,如果在其定义后的接下来的程序中,某函数用到了与其同名的变量,则在该变量所在函数中,全局变量被屏蔽,无法使用。
追问
全局变量难道不是静态存储的吗?
追答
当然全局变量在实质上是静态存储的!!
我的意思是它无法用static声明,就算在某些编译器上是允许的,但没有任何意义。
1、全局变量所占存储空间在整个程序运行过程中都不会释放,而声明变量为static的目的恰恰就是为了达到这点,因此是否声明为static无意义。
2、”用static声明局部变量“的目的是使局部变量在调用完函数后仍不释放空间,而全局变量完全能做到这点。(当然,能不用试最好不要去用全局变量,它会造成很多干扰)
3、全局变量当然可以在“它所作用的区域里的”任何一个函数中改变它的值,但前提是:
在哪个函数中没有与它名称相同的变量(这其实就是全局变量的问题之一),否则就会造成”屏蔽“。
全局变量的作用区域只在它所声明的位置之后的所有程序中!
有问题可以继续问,但我不常上线 o(╯□╰)o
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
全局变量,文件中的任何一个函数都可以改变它的值。但不知道他是不是静态存储的。以static开头的变量是静态存储的,文件中的任何一个函数都可以改变它的值。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
得看文件中的内容及它的修饰符
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询