函数内的局部静态变量为什么在其他函数内无法访问

作者&投稿:哀颖 (若有异议请与网页底部的电邮联系)
局部变量的作用域可用于其它函数的调用 这句话是否是对的,为什么?~

这句话不准确,如果在main函数里面定义的变量在main函数的作用范围里可以传递给其他函数,如果在除主函数的其他函数的里的局部变量会随着函数的结束而释放空间,所以不能再供别的函数传递参数。而main函数的局部变量时程序运行完后才释放空间的,程序运行完钱可以传递给其他函数

通俗一点说,static 修饰的是这个类生来就有的属性

比如狗的五官,够的尾巴等属性,然后会汪汪叫
class Dog{
static String 尾巴;
.....
static void wangwang(){}

}

而你的操作是在类的方法中去定义这个类生来就有的属性,想想也绝对别扭对吧
类的方法不是一个类,我们可以去new一个类对象,但是我们不可能去new一个类的方法

然后就是理论一点

在程序第一次创建(比如说new一个)某个对象的时候,java虚拟机会吧这个类的class文件加载到内存中,在这个过程中,虚拟机也会吧这个类的static属性初始化完毕,比如你想给Dog定义的age属性,虚拟机会分配内存空间并初始化值给age属性。这个过程只发生一次,今后你在创建Dog对象的时候,age会共享当初初始化的内存空间以及初始化值

而你吧static定义在方法内部,上面提到的初始化就无法进行

总之,这是java定义的编码规则,必须遵守而已

除非调用这个函数,否则函数内的什么变量在其他函数内都无法访问。你的意思可能是认为“静态变量是永久性的,所以在其他函数内应该可以访问”,但事实是函数内的静态变量也是“局部”变量,所以它只能在声明它的函数内部可见。


函数内的局部静态变量为什么在其他函数内无法访问
除非调用这个函数,否则函数内的什么变量在其他函数内都无法访问。你的意思可能是认为“静态变量是永久性的,所以在其他函数内应该可以访问”,但事实是函数内的静态变量也是“局部”变量,所以它只能在声明它的函数内部可见。

在函数内部定义的普通局部变量和静态局部变量在功能上有何不同?_百度...
静态局部变量实际上是放在程序数据区中的,而普通局部变量是放在栈里的。所以一个值每次在调用时被随时分配。另一个一直存在。静态的可以用来保存统计信息。例如这个函数的调用次数、或者根据这些次数判断是不是让这个函数继续执行下去

静态局部变量有什么用?
区分定义在函数外的全局变量,和函数内的局部变量,作用域,生命周期,及无显式初始化时的初始值,均有区别。1 动态全局变量:作用域为整个项目,即最终编译成可执行文件的所有文件中均可以使用动态全局变量。生命周期为从程序运行到程序退出,即贯穿整个运行时间。无显式初始化时默认初始化值为0。2 静...

函数中的静态局部变量可以在函数外使用吗
不可以。函数内的静态局部变量的视界是从该变量的声明开始,一直到函数结束。即使跳出函数这个变量仍然存在,但在函数外部是看不见这个变量的。

C语言:各函数内部定义的静态局部变量可否同名?
可以、、静态局部变量在函数调用结束后仍然存在,及它的内存空间不会被释放,但其他函数是不能引用它的。因为它是局部变量,只能被本函数引用,而不能被其他函数引用。所以你在其他函数中命名一个同名的变量是不冲突的、、

C++成员函数中的静态局部变量能不能提高程序的执行效率
通常栈的大小只有1MB,这个容量可以从编译器的选项上面修改,但这样做通常是无益的。因为局部变量的生存期非常短暂,他只在一个函数的范围内有效,当退出这个函数时,变量就死亡了(也就是所有数据都出栈了),不能再使用,所以这样的临时空间没有必要定义得很大。

静态局部变量和不可跨文件的全局变量,static int有何区别?
首先,当static int出现在函数内部时,它扮演的是静态局部变量的角色。这意味着它在函数执行期间存在,即使函数结束,其内存也不会被立即释放。这种特性使得它在函数调用期间保持数据的持久性。其次,当static int置于函数外部时,它的生命周期与全局变量相当,但有所不同。它具备全局可见性,却又非跨文件...

全局变量,静态全局变量,静态局部变量和局部变量的区别1
按存储区域分,全局变量、静态全局变量和静态局部变量都存放在内存的静态存储区域,局部变量存放在内存的栈区。按作用域分,全局变量在整个工程文件内都有效;静态全局变量只在定义它的文件内有效;静态局部变量只在定义它的函数内有效,只是程序仅分配一次内存,函数返回后,该变量不会消失;局部变量在定义...

局部变量,成员变量,静态变量分别怎么声明
循环或方法内部申明的变量叫局部变量,方法之外类中的变量成为全局变量,静态变量加上static,int a=0在方法中这是局部,在方法外全局,static int a,静态变量

C++中静态局部变量的生存期是什么?是贯穿整个程序还是从调用该函数开...
局部静态变量是在函数内的局部作用域的具有静态存储期(static duration)的对象。一个局部静态变量的生存期开始于该变量被初始化时自动构造(此过程中如果有构造函数则调用构造函数)完毕后,结束于整个程序结束时自动销毁(此过程中如果有析构函数则调用析构函数)前一刻。以下是直接理论依据参考:标准明确...

绥芬河市17278852368: 函数内的局部静态变量为什么在其他函数内无法访问 -
锐念盐酸: 除非调用这个函数,否则函数内的什么变量在其他函数内都无法访问.你的意思可能是认为“静态变量是永久性的,所以在其他函数内应该可以访问”,但事实是函数内的静态变量也是“局部”变量,所以它只能在声明它的函数内部可见.

绥芬河市17278852368: 函数中的静态局部变量可以在函数外使用吗 -
锐念盐酸: 不可以.函数内的静态局部变量的视界是从该变量的声明开始,一直到函数结束.即使跳出函数这个变量仍然存在,但在函数外部是看不见这个变量的.

绥芬河市17278852368: 局部变量的作用域可用于其它函数的调用 这句话是否是对的,为什么? -
锐念盐酸: 这句话不准确,如果在main函数里面定义的变量在main函数的作用范围里可以传递给其他函数,如果在除主函数的其他函数的里的局部变量会随着函数的结束而释放空间,所以不能再供别的函数传递参数.而main函数的局部变量时程序运行完后才释放空间的,程序运行完钱可以传递给其他函数

绥芬河市17278852368: 函数局部变量到底存在什么位置 -
锐念盐酸: 存在于它具体的函数参数中,定义于第一个具体的x或y的具体值.总的来说就是局部变量是函数内部定义的变量,其作用域是所在的函数.如果函数外还有一个跟局部变量名字一样的变量, 程序会认为它们两个是完全不同的两个变量.当退出函数的时候,其中的局部变量就同时被清除.如果你问的电脑的话上可以跳过,那是电析几何学的,电脑的话 局部变量是放在栈里面的,但是访问局部变量并不需要出栈,局部变量是通过栈偏移量直接访问的,函数返回时该函数的整个栈空间被回收.希望能帮到你.

绥芬河市17278852368: C语言:各函数内部定义的静态局部变量可否同名? -
锐念盐酸: 可以、、 静态局部变量在函数调用结束后仍然存在,及它的内存空间不会被释放,但其他函数是不能引用它的.因为它是局部变量,只能被本函数引用,而不能被其他函数引用.所以你在其他函数中命名一个同名的变量是不冲突的、、

绥芬河市17278852368: 函数内部与外部静态变量的意义与区别? -
锐念盐酸: 静态局部变量的生存周期虽然延续到整个程序执行完毕,但其作用域仍与自动变量相同,即只能在定义该变量的函数或语句块内使用.退出该函数或语句后,尽管该变量还存在,但其他的程序代码不能使用它,这是静态局部变与全局即外部不同之处.

绥芬河市17278852368: 在函数内部定义的普通局部变量和静态局部变量在功能上有何不同?
锐念盐酸: 静态局部变量实际上是放在程序数据区中的,而普通局部变量是放在栈里的.所以一个值每次在调用时被随时分配.另一个一直存在.静态的可以用来保存统计信息.例如这个函数的调用次数、或者根据这些次数判断是不是让这个函数继续执行下去

绥芬河市17278852368: 静态变量在不同的实例中地址是否一样,存储在什么区域 -
锐念盐酸: 不一样.因为函数内声明的局部变量的内存,是在栈内存中的,函数入栈后,函数内的局部变量的地址,都是相对 基址寄存器(EBP)

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网