首页 > 编程语言 > 详细

【C/C++知识点】变量存储类型+static关键字小节

时间:2020-04-22 21:46:01      阅读:70      评论:0      收藏:0      [点我收藏+]

【 局部变量 & 全局变量 】

1. 定义在函数内部的变量即为局部变量(包括函数的参数);定义在函数外部的变量即为全局变量(也称外部变量);

2.有效范围:

  局部变量有效范围是从定义处到函数结束(或程序块结束);

      全局变量有效范围是从定义处到所在文件结束,即同一文件的其他函数也可访问使用该变量。

 

【 存储类型 】

程序的局部变量存储在动态存储区中 (栈区),根据变量生命周期的开始和结束,系统会自动分配和释放存储空间。

全局变量存储在静态存储区,程序结束前内存不会被释放。 

 

*【 static 】关键字

静态局部变量:局部变量前加static, 表示该变量可以被函数外部访问(要通过该函数),变量会被存储在静态存储区;静态局部变量只会被初始化一次。

静态外部变量:全局变量前加static, 表示该变量只可以被所在文件访问。(避免不同文件中有相同变量名而引起混乱)

-----------------------------------------------------------------------------------------------------------

* extern 关键字。

在一个源文件中,如果要使用另一个源文件中的全局变量,需要通过extern关键字声明。编译和链接时,系统会知道该变量在别处定义的全局变量,并将该变量的作用域扩展到该源文件。

若一个全局变量定义为static类型,则外部文件中即使使用extern声明,也无法访问该变量。

----------------------------------------------------------------------------------------------------------

【 内部函数 & 外部函数】

一般函数都为外部函数,即可以被其他源文件调用。其他源文件调用此函数时,需要先声明, Eg. extern void swap(int &a, int &b); (extern可省略)

//函数声明的意义,即告诉编译器此函数在之后或其他文件中已定义;函数原型声明可将函数作用于扩展到声明处及之后

函数前加static关键字后,函数变为内部函数,函数便只能被该文件调用。

 

* 【各类变量作用域和存在性小节】

 

变量/函数类型 作用域 生命周期
局部变量 函数内部 函数内部
静态局部变量 函数内部 程序运行期间
全局变量 本文件及extern声明该变量的文件 程序运行期间
静态全局变量 本文件 程序运行期间
外部函数 声明该函数的文件 NA
内部函数 定义该函数的文件 NA

----------------------------------------------------------------------------------------------------------

【 类的静态成员变量和静态函数 】

类中的成员变量和成员函数也可被static修饰,表示该类的对象都共享这些变量和函数

计算一个对象size时,不包括静态成员变量的大小

在包含类的静态成员变量的文件中,需要给这些变量声明和赋初值。Eg. static int myClass::myStaticVal = 1;

可以通过某一个对象名或类名调用静态成员;

静态函数只能访问静态成员变量, 也只能调用静态成员函数

虚函数不可以是静态函数;

类的静态成员变量本质就是全局变量,而静态成员函数本质就是全局函数。之所以写在类中,是为了更好地理解和维护(不是同一类对象不可访问私有成员)。

 

【C/C++知识点】变量存储类型+static关键字小节

原文:https://www.cnblogs.com/xiyang2020/p/12755490.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!