C/C++面试题:static(静态)变量的作用
2016-07-21 17:54
465 查看
C /:
static
的作用:
(1)在函数体内,静态变量具有“记忆”功能,即一个被声明为静态的变量在这一函数被调用的过程中其值维持不变
(2)在函数体外(但在模块内),它的作用域范围有限制,即如果一个变量被声明为静态的,那么该变量可以被模块内的所有函数访问,但不能被模块外其他函数访问。如果一个函数被声明为静态的,那么该函数与普通函数作用域不同,其作用域仅在本文件中,它只可被这一模块内的其他函数调用,也就是说,这个函数被限制在声明它的模块的本地范围内使用。
(3)内部函数应该在当前源文件中说明和定义,对于可在当前源文件以外使用的函数,应该在一个头文件中说明,使用这些函数的源文件要包含这个头文件。
static 全局变量和普通的全局变量的区别:
static 全局变量只初始化一次(防止在其他文件单元中被引用);
static
局部变量和普通的局部变量的区别:
static 局部变量只被初始化一次,下一次的运算依据是上一次结果值;
static 函数与普通函数的区别:
作用域不一样,static 函数只在一个源文件中有效,不能被其他源文件使用;
C++/:
在类内部成员的声明前加上 static,即该成员就是类内部的静态数据成员,特点?
(1)静态数据成员是类成员;(无论类的对象被定义了多少个,静态数据成员在程序中也只有一份复制品)
(2)静态数据成员存储在全局数据区,属于本类的所有对象共享,不属于特定的类对象;
(3)static 成员变量的初始化在类外,不能加上 private 。
引申1:为什么 static 变量只初始化一次?
对于所有的
4000
变量都只初始化一次,而由于静态变量具有 “记忆” 功能,初始化后,一直都没有被销毁,都会保存在内存区域中,所以不会再次初始化。
存放在静态数据区的变量的生命周期一般与整个源程序 “同生死”、“共存亡”,所以它只初始化一次。
引申2:在头文件中定义静态变量,是否可行?为什么?
不可行,如果在头文件中定义静态变量,会造成资源浪费的问题,同时也可能引起程序的错误。因为如果在使用了该头文件的每个 C 语言文件中定义静态变量,在每个头文件中都会单独存在一个静态变量,从而会引起空间浪费或者程序出错。
static
的作用:
(1)在函数体内,静态变量具有“记忆”功能,即一个被声明为静态的变量在这一函数被调用的过程中其值维持不变
(2)在函数体外(但在模块内),它的作用域范围有限制,即如果一个变量被声明为静态的,那么该变量可以被模块内的所有函数访问,但不能被模块外其他函数访问。如果一个函数被声明为静态的,那么该函数与普通函数作用域不同,其作用域仅在本文件中,它只可被这一模块内的其他函数调用,也就是说,这个函数被限制在声明它的模块的本地范围内使用。
(3)内部函数应该在当前源文件中说明和定义,对于可在当前源文件以外使用的函数,应该在一个头文件中说明,使用这些函数的源文件要包含这个头文件。
static 全局变量和普通的全局变量的区别:
static 全局变量只初始化一次(防止在其他文件单元中被引用);
static
局部变量和普通的局部变量的区别:
static 局部变量只被初始化一次,下一次的运算依据是上一次结果值;
static 函数与普通函数的区别:
作用域不一样,static 函数只在一个源文件中有效,不能被其他源文件使用;
C++/:
在类内部成员的声明前加上 static,即该成员就是类内部的静态数据成员,特点?
(1)静态数据成员是类成员;(无论类的对象被定义了多少个,静态数据成员在程序中也只有一份复制品)
(2)静态数据成员存储在全局数据区,属于本类的所有对象共享,不属于特定的类对象;
(3)static 成员变量的初始化在类外,不能加上 private 。
引申1:为什么 static 变量只初始化一次?
对于所有的
4000
变量都只初始化一次,而由于静态变量具有 “记忆” 功能,初始化后,一直都没有被销毁,都会保存在内存区域中,所以不会再次初始化。
存放在静态数据区的变量的生命周期一般与整个源程序 “同生死”、“共存亡”,所以它只初始化一次。
引申2:在头文件中定义静态变量,是否可行?为什么?
不可行,如果在头文件中定义静态变量,会造成资源浪费的问题,同时也可能引起程序的错误。因为如果在使用了该头文件的每个 C 语言文件中定义静态变量,在每个头文件中都会单独存在一个静态变量,从而会引起空间浪费或者程序出错。
相关文章推荐
- 只有程序员看的懂的面试圣经|如何拿下编程面试
- 下一次技术面试时要问的 3 个重要问题
- 理解C#编程中的静态类和静态成员以及密封类
- PHP程序员面试 切忌急功近利(更需要注重以后的发展)
- 浅析C#静态类,静态构造函数,静态变量
- C语言中static的作用及C语言中使用静态函数有何好处
- 从汇编看c++中函数里面的static关键字的使用说明
- C++的static关键字及变量存储位置总结
- PHP中new static() 和 new self() 的区别介绍
- php 静态变量与自定义常量的使用方法
- C#常见算法面试题小结
- C#静态static的用法实例分析
- static关键字的作用详解
- 浅谈C/C++中的static与extern关键字的使用详解
- C语言基础知识点解析(extern,static,typedef,const)
- c# static 静态数据成员
- 浅析php变量修饰符static的使用
- php面向对象全攻略 (十) final static const关键字的使用
- php 面试碰到过的问题 在此做下记录
- asp.net 面试+笔试题目第1/2页