static 关键字总结

一、在C语言中,static主要定义全局静态变量、局部静态变量和静态函数。

1.定义全局静态变量:在全局变量前加上关键字 static,特点:
  a.在全局数据区分配内存。
  b.如果没有初始化,其默认值为0.
  c.作用域:文件作用域(只在被定义的文件中可见。)生成的符号为local符号,而编译器编译链接时只会看到global符号
  d.生命周期:程序运行期一直存在

注意:只要文件不相互包含,在两个不同的文件中是可以定义两个相同的静态变量的,他们是完全不同的变量。

2.局部静态变量:在局部变量前加上关键字 static,特点:
  a.在全局数据区分配内存。
  b.如果不显示初始化,那么隐式初始化为0。
  c.作用域:局部作用域(只在局部作用域中可见)
  d.生命周期:程序运行期一直存在

注意:只被初始化一次,多线程中需加锁保护  

3.静态函数:在函数前面加上关键字 static,特点:
   a.静态函数只能在本源文件中使用。
   b.在文件作用域中声明的inline函数默认为static。


二、在c++语言中,新增了两种作用:定义静态数据成员和静态函数成员

1.定义静态数据成员:
a.在全局数据区分配内存。
b.静态数据成员定义时要分配空间,故不能在类声明中定义。

2.静态成员函数:
a.静态成员函数与类相联系,不与类的对象相联系
b.静态成员函数不能访问非静态数据成员。

注意:静态成员函数和静态数据成员都没有 this 指针。

猜你喜欢

转载自blog.csdn.net/ShWe_yayaya/article/details/81415096