ITKeyword,专注技术干货聚合推荐

注册 | 登录

C/C++面试题:static(静态)变量的作用

qq_26626709 分享于 2016-07-21

推荐:C++ 中的static静态变量

1. static 变量 静态变量的类型 说明符是static。 静态变量当然是属于静态存储方式,但是属于静态存储方式的量不一定就是静态变量。 例如外部变量虽属于静态 存

2020腾讯云共同战“疫”,助力复工(优惠前所未有!4核8G,5M带宽 1684元/3年),
地址https://cloud.tencent.com/act/cps/redirect?redirect=1053

2020阿里云最低价产品入口,含代金券(新老用户有优惠),
地址https://www.aliyun.com/minisite/goods

C /:  static 的作用:          (1)在函数体内,静态变量具有“记忆”功能,即一个被声明为静态的变量在这一函数被调用的过程中其值维持不变
         (2)在函数体外(但在模块内),它的作用域范围有限制,即如果一个变量被声明为静态的,那么该变量可以被模块内的所有函数访问,但不能被模块外其他函数访问。如果一个函数被声明为静态的,那么该函数与普通函数作用域不同,其作用域仅在本文件中,它只可被这一模块内的其他函数调用,也就是说,这个函数被限制在声明它的模块的本地范围内使用。
         (3)内部函数应该在当前源文件中说明和定义,对于可在当前源文件以外使用的函数,应该在一个头文件中说明,使用这些函数的源文件要包含这个头文件。

 static 全局变量和普通的全局变量的区别:          static 全局变量只初始化一次(防止在其他文件单元中被引用);

  static 局部变量和普通的 局部 变量的区别:          static 局部变量只被初始化一次,下一次的运算依据是上一次结果值;

 static 函数与普通函数的区别:
         作用域不一样,static 函数只在一个源文件中有效,

推荐:学习笔记之深入浅出MFC 第8章 C++重要特性----静态变量(static)

静态成员(变量和函数) 静态成员变量或函数有什么用呢?前面我们讲了类及类成员,一般类是指抽象的特性,必须对象化(实例化)之后才能进行操作。那么,假如类

不能被其他源文件使用;

C++/:          在类内部成员的声明前加上 static,即该成员就是类内部的静态数据成员,特点?
              (1)静态数据成员是类成员;(无论类的对象被定义了多少个,静态数据成员在程序中也只有一份复制品)
              (2)静态数据成员存储在全局数据区,属于本类的所有对象共享,不属于特定的类对象;
              (3)static 成员变量的初始化在类外,不能加上 private 。

 引申1:为什么 static 变量只初始化一次?
         对于所有的变量都只初始化一次,而由于静态变量具有 “记忆” 功能,初始化后,一直都没有被销毁,都会保存在内存区域中,所以不会再次初始化。
         存放在静态数据区的变量的生命周期一般与整个源程序 “同生死”、“共存亡”,所以它只初始化一次。

 引申2:在头文件中定义静态变量,是否可行?为什么?
         不可行,如果在头文件中定义静态变量,会造成资源浪费的问题,同时也可能引起程序的错误。因为如果在使用了该头文件的每个 C 语言文件中定义静态变量,在每个头文件中都会单独存在一个静态变量,从而会引起空间浪费或者程序出错。

推荐:c++中全局变量,全局静态变量,局部静态变量,局部变量的作用域和生命周期

转载地址:http://blog.csdn.net/yunyun1886358/article/details/5632087   今天在论坛上看到有朋友发帖问道:既然静态全局变量与全局变量都存储在全局数据区,

C /:  static 的作用:          (1)在函数体内,静态变量具有“记忆”功能,即一个被声明为静态的变量在这一函数被调用的过程中其值维持不变          (2)在函数体外(但在模块内),它的

相关阅读排行


相关内容推荐

最新文章

×

×

请激活账号

为了能正常使用评论、编辑功能及以后陆续为用户提供的其他产品,请激活账号。

您的注册邮箱: 修改

重新发送激活邮件 进入我的邮箱

如果您没有收到激活邮件,请注意检查垃圾箱。