正在载入在线练习界面,本页内容可直接阅读…

AK CSP › CSP-S 2024 第一轮真题 › 第3题

CSP-S 2024 第一轮 第3题:在C++中,以下哪个函数调用会造成栈溢出?(

单项选择 · 函数与递归 · 答案 C

题目

在 C++ 中,以下哪个函数调用会造成栈溢出?( )

选项

  • A. int foo() { return 0; }
  • B. int bar() { int x = 1; return x; }
  • C. void baz() { int a[1000]; baz(); }
  • D. void qux() { return; }

答案

C

题解

答案是 C。

baz() 会不断调用自己,却没有终止条件:

``cpp void baz() { int a[1000]; baz(); } ``

通常,每次函数调用都会占用栈空间。递归调用一直不结束,栈空间就会不断累积,最终导致栈溢出。局部数组 a 还可能加快栈空间的消耗。

A、B、D 都会正常返回,不存在无限递归。

记住:递归必须有终止条件。(本题按通常不考虑编译器优化的情况判断。)

真题版权归 CCF 所有,本站仅用于非商业教学用途。页面加载后可直接在线作答,作答记录保存在本浏览器或账号中。 京ICP备2026056990号-1 京公网安备11010502062986号