c/c++知识点: static关键词详解 一

目录

 

1 static关键词修饰全局变量

2 static关键词修饰局部变量

3 static关键词修饰函数


1 static关键词修饰全局变量

普通全局变量:全局变量定义在函数体之外,存在于全局数据区中,对整个工程的文件可见,不同文件不能定义同名的全局变量。各个文件之间共享全局变量,只需要用extern声明即可,如下图所示:

                                                                      c/c++知识点: static关键词详解 一

静态全局变量:使用static声明的全局变量称为静态全局变量,也存在于全局数据区,但是对外部文件隐藏,只在本文文件中可见,不同文件可以用static声明同名的全局变量,如下图所示:

                                                      c/c++知识点: static关键词详解 一

2 static关键词修饰局部变量

普通局部变量:普通局部变量在函数体内声明,存在于栈区,在函数调用时创建,函数返回时销毁。如下图所示:

                                                    c/c++知识点: static关键词详解 一

静态局部变量:静态局部变量在函数体内声明,存在于全局区,在编译期创建初始化,整个程序结束后销毁。如下图所示:

                                                   c/c++知识点: static关键词详解 一

3 static关键词修饰函数

 普通函数将函数声明放在头文件中,其他文件加载该头文件便可以引用这些函数,不同文件中不能定义相同名称的函数,否则编译不通过。

静态函数与普通函数的作用域不同,仅在本文件中可以使用,对外部文件隐藏,不同的文件可以使用static定义相同名称的函数。除此之外,static函数在内存中只有一份,普通函数在每个被调用中维持一份拷贝