GESP 四级 · GESP 四级样题(C++ 组) 第 22 题

判断题 · 答案 A

← 整套速查表 GESP 四级 全部真题

题目

C++ 语言中的局部变量在函数调用结束后会被销毁。( )

答案:A

解题思维

这道题考查 C++ 中变量的存储期与作用域。拿到题先想:局部变量存在哪?栈上。函数调用结束栈帧弹出,栈上内存自动回收,所以局部变量生命周期随函数结束而终止,这是语言规定,不是编译器优化。

常见错误

学生常把局部变量和全局变量混淆,以为变量只是‘看不见’了,其实内存早被释放了;还有人受静态变量影响,误以为局部变量也像 static 那样存活到程序结束;还有人纠结‘销毁’这个词,觉得变量只是‘不可访问’,其实 C++ 标准里自动存储期对象在函数返回时确实被销毁(析构函数会执行)。

详细解析(节选)

【考点】变量存储与生命周期|作用域与栈帧|静态变量特性

1. 考纲定位 GESP 四级「C++ 语言基础」模块,变量存储与生命周期。命题人卡住的是初学者对「栈内存自动回收机制」的盲区——四级考生往往能写出局部变量,却说不清它何时消亡。

2. 解题思维 看到「局部变量」「函数调用结束」,立刻触发栈帧模型:局部变量被分配在调用栈的栈帧里,函数返回时栈帧弹出,其中所有局部存储单元必然被释放。这是 C++ 语言规定的自动存储期行为,不是编译器优化,而是语言语义。

3. 陷阱拆解 命题人把陷阱埋在「结束后会被销毁」这个绝对化表述里——恰恰是 C++ 的标准定义。考生若凭直觉认为「变量只是暂时不可访问」就会错选 B。更阴险的是,有人会把局部变量和全局变量混为一谈,以为「变量不会消失,只是看不见」,这是典型的作用域误解。

4. 反命题思维 把「局部变量」改成「static 局部变量」,答案就反转成 B,因为静态局部变量存在整个运行期,只初始化一次。这类变题在五级常出现,用来区分是否真正理解存储期的分类。

刷到类似题,先问自己:「这变量是自动存储期还是静态存储期?」——四级是考常识,五级是考辨析。

结论:局部变量生命周期随函数结束而终止,因此题干陈述正确,选 A。

在 OI伴学 里做这道题
登录后可计时作答、查看完整六段式解析,并按你的错题自动生成同类练习。
去刷题先做一次 AI 学情诊断