C++重点简答题
📣一、什么是静态变量?
- 定义
- C语言中的静态变量是指被static关键字修饰的变量。
- 分类
- 静态变量有两种类型,一种是定义在全局变量上的全局静态变量,另一种是定义在局部变量上的局部静态变量。
- 全局静态变量:在全局变量全面加上static,全局变量就被定义成一个全局静态变量
(1)内存中的位置:静态存储区(静态存储区在整个程序运行期间都存在)
(2)初始化:未经初始化的全局静态变量会被程序自动初始化为0;
(3)作用域:全局静态变量在声明他的文件之外是不可见的。准确地讲从定义之处开始到文件结尾。- 局部静态变量:在局部变量前面加上关键字static,局部变量就被定义成一个局部静态变量
(1)内存中的位置:静态存储区
(2)初始化:未经初始化的局部静态变量会被程序自动初始化为0(自动对象的值是任意的,除非他被显示初始化)
(3)作用域:作用域仍为局部作用域,当定义它的函数或者语句块结束的时候,作用域随之结束。
📣二、谈谈你对顺序文件的认识?
顺序文件是最常见的文件组织形式。顺序文件由一系列记录按照某种顺序排列形成。
其中的记录通常是定长记录,因而能用较快的速度查找文件中的记录。顺序文件是记录按其在文件中的逻辑顺序依次进入存储介质而建立的,及顺序文件中的物理记录的顺序和逻辑记录的顺序是一致的。
顺序文件通常用于批处理应用中,并且如果这类应用涉及到对所有记录的处理(如关于机长或工资单的应用),则顺序文件通常是最佳的。顺序文件组织是唯一可以很容易地存储在磁盘和磁带上的文件组织。
📣三、什么是局部变量?什么是全局变量?二者的区别?
- 局部变量,也称内部变量,是指在一个函数内部或符合语句内部定义的变量。
- 局部变量的生存期:从函数被调用的时刻算起到函数返回调用处的时刻结束。
- 按存储区域分:全局变量、静态全局变量和静态局部变量都存放在内存的静态存储区域,局部变量则存放在内存的栈区。
- 按作用域分:
1.全局变量:在整个工程文件内都有效;在函数外定义的变量,即从定义变量的位置到本源文件结束都有效。由于同一文件中的所有函数都能引用全局变量的值,因此如果在一个函数中改变了全局变量的值,就能影响到其他函数中全局变量的值。
2.静态全局变量:只在定义它的文件内有效,效果和全局变量一样,不过就在本文件内部。
3.静态全局变量:只在定义它的函数内有效,只是程序仅分配一次内存,函数返回后,该变量不会消失;静态局部变量的生存期虽然为整个工程,但是其作用仍与局部变量相同,即只能在定义该变量的函数使用该变量,退出该函数后,尽管该变量还继续存在,但不能使用它。
4.局部变量:在定义它的函数内有效,但是函数返回后失效。在函数内定义的变量,即在一个函数内部定义的变量,只在本函数范围内有效。- 注意:全局变量和静态变量如果没有手工初始化,则由编译器初始化为0。局部变量的值不可知。
- 静态局部变量和全局变量最明显的区别就在于:全局变量在其定义后所有函数都能用,但是静态局部变量只能在一个函数里面用。
- 形参变量:只在被调用期间才能分配内存单元,调用结束立即释放。
📣四、谈谈你对数组的认识?
- C语言支持数组数据结构,它可以存储一个固定大小的相同类型元素的顺序集合。数组是- -用来存储一系列数据,但它往往被认为是一系列相同类型的变量。
- 数组的声明并不是声明一个个单独的变量,而是声明一个数组变量,然后使用数组变量来表示一个单独的变量。
- 所有的数组都是由连续的内存位置组成,最低的地址对应第一个元素,最高的地址对应最后一个元素。
- 数组中的特定元素可以通过索引访问,第一个索引为0。
- 特点
- 数组是相同数据类型的元素的集合。
- 数组中的各元素的存储时有先后顺序的,它们在内存中按照这个先后顺序连续存放在一起。
- 数组元素用整个数组的名字和它自己在数组中的顺序位置来表示。