首页 > 试题广场 >

static关键字的作用

[问答题]

请你说明一下static关键字的作用

1)函数体内static变量的作用范围为该函数体,不同于auto变量,该变量的内存只被分配一次,因此其值在下一次调用时仍维持上次的值;

2)在模块内的static全局变量可以被模块内所有函数访问,但不能被模块外其他函数访问

3)在模块内的static函数只可被这一模块内的其他函数调用,这个函数的使用范围被限制在声明它的模块内

4)在类中的static成员变量属于整个类所拥有,对类的所有对象只有一份复制

       5)在类中的static成员变量属于整个类所拥有,这个函数不接收this指针,因而只能访问类的static成员变量

发表于 2019-01-08 11:59:10 回复(0)

static关键字(对外不可见)

  • 修饰普通变量, 修改变量的存储区域和生命周期,使变量存储在静态区,在 main 函数运行前就分配了空间,在整个程序运行期间一直存在,如果有初始值就用初始值初始化它,如果没有初始值系统用默认值初始化它,自动初始化为0。 全局变量作用域:全局静态变量在声明他的文件之外是不可见的,准确地说是从定义之处开始,到文件结尾。 局部变量作用域:仍为局部作用域,当定义它的函数或者语句块结束的时候,作用域结束。但是当局部静态变量离开作用域后,并没有销毁,而是仍然驻留在内存当中,只不过我们不能再对它进行访问,直到该函数再次被调用,并且值不变;
  • 修饰普通函数, 其只能在定义它的源文件中使用,不能在其他源文件中被引用
  • 修饰类成员变量和成员函数, 它们是属于类的,而不是某个对象,所有对象共享一个静态成员。静态成员通过<类名>::<静态成员>来使用。在 static 函数内不能访问非静态成员
发表于 2020-08-24 11:58:44 回复(0)
static有三个作用: 1.static在修饰局部变量的时候,其使得局部变量的生命周期发生改变,使得其放在data段,直到程序运行结束才结束。 2.static在修饰全局变量的时候,作用是改变其作用域,使得全局变量只能在定义的文件中使用。 3.static在修饰函数的时候,同样也是只能时函数只能在当前的文件中使用。
发表于 2019-01-07 23:12:56 回复(0)
  • 静态全局变量
    • 全局变量作用于整个程序
    • 静态全局变量作用于当前源文件
  • 静态局部变量
    • 生命周期:贯穿整个程序执行(只会被初始化一次)static count=0;
    • 作用域:和普通局部变量一样
  • 静态数据成员
    • 作用:多个类的对象会共享这个静态成员,实现信息共享
  • 静态成员函数
    • 作用:管理静态数据成员(静态成员函数只能访问静态数据成员,理由是,静态成员函数是属于大家的,不是属于某个类的,他没有this指针)。
发表于 2020-03-11 15:45:21 回复(0)

1). 在函数体,一个被声明为静态的变量在这一函数被调用过程中维持其值不变。

2). 在模块内(但在函数体外),一个被声明为静态的变量可以被模块内所用函数访问,但不能被模块外其它函数访问。它是一个本地的全局变量。

3). 在模块内,一个被声明为静态的函数只可被这一模块内的其它函数调用。那就是,这个函数被限制在声明它的模块的本地范围内使用。
发表于 2019-10-24 11:16:53 回复(0)