static修饰的局部变量在函数外不可访问对吗?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了static修饰的局部变量在函数外不可访问对吗?相关的知识,希望对你有一定的参考价值。

它的可见域只在函数内,外部不可以直接访问。如果你返回它指针给外部适用,还是可以适用的 参考技术A A不正确。应该是取决于声明而不是定义的位置。声明引入一个名称,定义引入一个实体,作用域和名称相关,生存期和对象(对象属于一种实体,其它实体还有类型等)相关。
C明显不正确。理由同上,static修饰局部变量为静态存储类,在首次进入函数时初始化一次,之后进入函数时不初始化而保留在上一次离开函数的值。此外,tssuperszy 的说法不确切,应该是在作用域外“不可见”而不是“不可访问”(特别地,在C++中两者有严格区别)。
D也是不正确的。理由如C选项的解释,使用static修饰局部变量不是为了限制其它编译单元的引用,而是为了在函数多次调用之间保存值。
====
[原创回答团]

C语言

static

在C语言中static关键字有以下的作用

1,在修饰变量的时候,static修饰的静态局部变量只执行一次,而且延长了局部变量的生命周期,直到程序运行结束以后才释放。如果在子函数中的变量,如果想要这个变量在函数执行结束后不被释放掉,可以使用static修饰。

2,static修饰全局变量的时候,这个全局变量只能在本文件中访问,不能在其它文件中访问,即便是extern外部声明也不可以。

3,static修饰一个函数,则这个函数的只能在本文件中调用,不能被其他文件调用。这个有点类似于C#中的private。

以上是关于static修饰的局部变量在函数外不可访问对吗?的主要内容,如果未能解决你的问题,请参考以下文章

Java——变量

static在c语言中是啥意思

c语言中static说明是啥意思?

C语言

C++ static 修饰符

c语言中static的作用和用法