判断题
5、全家变量可使用static关键字进行定义,由于全局变量一直存在,占用了大量的内存单元,且加大了程序的耦合性,不利于程序的移植或复用。
5、全家变量可使用static关键字进行定义,由于全局变量一直存在,占用了大量的内存单元,且加大了程序的耦合性,不利于程序的移植或复用。
( )
A
正确
B
错误
答案解析
正确答案:A
解析:
这道题的陈述是**正确**的。以下是对该知识点的详细解析:
### 1. 关于 `static` 关键字与全局变量
在 C/C++ 等语言中,全局变量默认具有外部链接属性(external linkage),即其他文件可以通过 `extern` 关键字访问它。
当在全局变量前加上 `static` 关键字时(例如 `static int g_var;`),该变量的链接属性变为**内部链接**(internal linkage)。这意味着该变量**只能在定义它的源文件内部使用**,其他文件无法访问。
* **注意**:题目中说“全家变量可使用static关键字进行定义”,这里的“全家变量”显然是“全局变量”的笔误。虽然表述略有瑕疵,但其核心意图是考察 static 对全局变量作用域的限制。
### 2. 全局变量的缺点
题目后半部分指出了全局变量的主要弊端,这些观点在软件工程中是被广泛认可的:
* **占用内存**:全局变量存储在静态数据区,从程序启动到结束一直存在,确实会长期占用内存单元。
* **耦合性高**:任何函数都可以修改全局变量,这使得函数之间的依赖关系变得隐式且复杂。一个模块对全局变量的修改可能会意外影响另一个模块的行为,导致程序难以调试和维护。
* **不利于移植和复用**:由于依赖全局状态,包含全局变量的代码模块很难独立提取出来复用到其他项目中,因为必须同时复制相关的全局变量定义及其初始状态,增加了移植难度。
### 结论
尽管题目中存在“全家变量”这一明显的错别字(应为“全局变量”),但其关于 **static 修饰全局变量** 以及 **全局变量缺点** 的描述在计算机科学和编程规范中是**正确**的。使用 `static` 修饰全局变量正是为了限制其作用域,从而在一定程度上降低耦合性,提高模块的独立性。
因此,答案选 **正确 (√)**。
相关知识点:
全局变量用static定义
题目纠错
单片机
相关题目
单选题
1、在 AT89S51 的中断请求源中,需要外加电路实现中断撤销的是 ( )
单选题
1、下列说法错误的是( )
单选题
5、当AT89S51单片机响应中断后,必须用软件清除的中断请求标志是( )。
选择
单选题
4、AT89S51单片机复位后,中断优先级最高的中断源是( )。
单选题
3、AT89S51单片机响应中断后,产生长调用指令LCALL,执行该指令的过程包括:首先把( )的内容压入堆栈,以进行断点保护,然后把长调用指令的16位地址送入( ),使程序执行转向( )的中断地址区。
单选题
2、若(IP)=00010100B,则优先级最高值为( ),最低者为( )。
单选题
1、外部中断1的中断入口地址为( )。定时器T1的中断入口地址为( )。
单选题
1、使用专用键盘/显示器接口芯片HD72794.方案实现的键盘/显示器接口的优点是什么?
单选题
1、非编码键盘分为独立式键盘和矩阵式键盘分别用于什么场合?
独立式键盘:
场合:适用于按键数量较少( )的系统
特点:每个按键直接占用一个 I/O 口,电路简单,软件处理直接。
矩阵式键盘:
场合:适用于按键数量较多( )的场合
特点:通过行列交叉排列,用较少的引脚控制更多的按键( ),节省硬件资源
单选题
1、LED的静态显示方式与动态显示方式有何区别?各有什么优缺点?
