📖 Scenario: Imagine you are baking a layered cake. Each layer depends on the previous one being ready. Similarly, in programming, functions call other functions, and the computer keeps track of these calls using a call stack.
🎯 Goal: You will write a simple C++ program with three functions calling each other. You will observe how the call stack works by printing messages when entering and exiting each function.
📋 What You'll Learn
Create three functions named first, second, and third.
Each function should print a message when it starts and when it ends.
The first function calls second, and second calls third.
Call the first function from main.
Print messages exactly as instructed to show the call stack behavior.
💡 Why This Matters
🌍 Real World
Understanding the call stack is important for debugging programs and knowing how your computer runs your code step-by-step.
💼 Career
Software developers and engineers use call stack knowledge to fix bugs, optimize code, and understand program flow.
Progress0 / 4 steps
1
Create the third function
Write a function called third that prints "Entering third" when it starts and "Exiting third" when it ends.
C++
Hint
Use std::cout to print messages inside the third function.
2
Create the second function that calls third
Write a function called second that prints "Entering second" when it starts, calls the third function, then prints "Exiting second" when it ends.
C++
Hint
Call the third() function between the two print statements in second().
3
Create the first function that calls second
Write a function called first that prints "Entering first" when it starts, calls the second function, then prints "Exiting first" when it ends.
C++
Hint
Call the second() function between the two print statements in first().
4
Call first from main and print the output
In the main function, call the first function to start the chain of calls. Then run the program to see the order of messages printed.
C++
Hint
Call first() inside main() to start the function calls.
Practice
(1/5)
1. What does the call stack do when a function is called in C++?
easy
A. It adds a new frame for the function call on top of the stack.
B. It removes the last function call from the stack.
C. It clears all previous function calls.
D. It pauses the program execution permanently.
Solution
Step 1: Understand function call behavior
When a function is called, the program needs to remember where to return after the function finishes.
Step 2: Role of the call stack
The call stack adds a new frame on top to store this information and local variables.
Final Answer:
It adds a new frame for the function call on top of the stack. -> Option A
Quick Check:
Function call = add frame [OK]
Hint: Call means add frame; return means remove frame [OK]
Common Mistakes:
Thinking the stack removes frames on function call
Believing the stack clears all calls at once
Confusing call stack with program pause
2. Which of the following C++ code snippets correctly shows a function call that affects the call stack?
easy
A. int main() { return 0; } void foo() { foo(); }
B. void foo() { main(); } int main() { return 0; }
C. void foo() {} int main() { foo(); return 0; }
D. int main() { int x = 5; }
Solution
Step 1: Identify valid function call from main
void foo() {} int main() { foo(); return 0; } calls foo() from main, which adds a frame to the call stack.
Step 2: Check other options for correctness
void foo() { main(); } int main() { return 0; } calls main() from foo(), which is invalid as main should not be called explicitly. int main() { return 0; } void foo() { foo(); } has foo calling itself but foo is not called from main, so no stack change from main. int main() { int x = 5; } has no function calls.
Final Answer:
void foo() {} int main() { foo(); return 0; } -> Option C
Quick Check:
Valid call from main = void foo() {} int main() { foo(); return 0; } [OK]
Hint: Look for main calling another function directly [OK]
Common Mistakes:
Thinking main can be called like a normal function
Ignoring function call order
Confusing declaration with call
3. What is the output of this C++ program?
#include <iostream>
void print(int n) {
if (n == 0) return;
print(n - 1);
std::cout << n << " ";
}
int main() {
print(3);
return 0;
}
medium
A. 3 2 1
B. 1 2 3
C. 0 1 2 3
D. 3 2 1 0
Solution
Step 1: Trace recursive calls
print(3) calls print(2), which calls print(1), which calls print(0). At print(0), it returns immediately.
Step 2: Print after returning from recursion
After print(0) returns, print(1) prints '1 ', then print(2) prints '2 ', then print(3) prints '3 '.
Final Answer:
1 2 3 -> Option B
Quick Check:
Recursion prints after calls = 1 2 3 [OK]
Hint: Print happens after recursion call returns [OK]
Common Mistakes:
Printing before recursive call instead of after
Including 0 in output incorrectly
Confusing order of prints in recursion
4. The following code causes a runtime error. What is the main cause?