C++ 语言中的全局变量在整个程序的生命周期内都是有效的。( )
这道题考的是全局变量的生命周期。拿到题先想定义位置:函数外就是全局。全局变量编译期就占内存,程序启动时已存在,直到程序结束才回收,所以整个生命周期都有效。
学生常把全局变量和局部变量搞混,以为函数结束变量就没了,或者误以为全局变量只在main函数里有效。还有的会纠结‘程序启动时是否已分配’,其实全局变量在编译期就定地址了,运行期一直保留,不会随函数调用结束而消失。
【考点】变量作用域|存储期(静态存储期)|程序生命周期
GESP四级C++组「变量与作用域」模块。命题人专卡「全局变量生命周期」这一盲区——学生常把全局当局部看,误以为函数结束就失效,或以为全局变量只在main里可用。
解题思维:看到「全局变量」先想「定义位置」(函数外);再想「生命周期」(程序启动到结束)。全局变量在编译期分配内存,运行期一直保留,直到程序终止才被回收;局部变量才随函数结束销毁。因此「整个程序生命周期内有效」这句话完全成立,选A。
陷阱拆解:错误选项B是典型「偷换概念」陷阱。它利用学生把「全局」误读为「主函数内」或「调用者作用域内」的思维惯性,故意制造「全局变量只到函数结束」的错觉。另一陷阱是「边界条件」:学生容易想到「输出时有效」却忽略「程序启动时已存在」。其实全局变量在程序启动时就分配内存,运行期一直保留,直到程序终止才被回收;局部变量才随函数结束销毁。
反命题思维:命题人若把「整个程序生命周期」换成「主函数内」,答案就变B;若换成「从程序启动到结束」,答案仍是A。刷到类似题,先问自己「它想考我『作用域』还是『生命周期』的差异?」——作用域决定「哪里能访问」,生命周期决定「什么时候存在」。
考频趋势:变量与常量在题库共考过77题,覆盖5个考试级别(2023-2025);逐年分布:2023年30题、2024年26题、2025年11题;分赛事:GESP一级40题、GESP二级15题、GESP四级12题、GESP三级8题、CSP入门级2题。作用域与生命周期共考过3题,覆盖2个考试级别(2023-2025);逐年分布:2023年1题、2025年1题;分赛事:GESP四级2题、GESP三级1题。可见该考点在四级出现频率较高,且近年持续考查。
预测:暂无足够依据预测未来具体出题形式,但可预期仍会围绕「全局变量何时存在」「作用域与生命周期的区别」等核心概念设计辨析题。