Scope of variables in C++ - Time & Space Complexity
We want to see how the time cost changes when we use variables in different places in code.
How does where a variable is declared affect how many times code runs?
Analyze the time complexity of the following code snippet.
for (int i = 0; i < n; i++) {
int x = i * 2;
// do something with x
}
int y = 0;
for (int i = 0; i < n; i++) {
y += i;
}
This code shows two loops: one declares a variable inside the loop, the other outside.
Look at the loops and variable declarations that repeat.
- Primary operation: The for loops run n times each.
- How many times: Each loop runs exactly n times.
- Variable declarations: The variable inside the first loop is created and destroyed each time.
As n grows, the loops run more times, but variable scope does not add extra loops.
| Input Size (n) | Approx. Operations |
|---|---|
| 10 | About 20 loop steps (2 loops x 10 each) |
| 100 | About 200 loop steps |
| 1000 | About 2000 loop steps |
Pattern observation: The total steps grow linearly with n, regardless of where variables are declared.
Time Complexity: O(n)
This means the time grows in a straight line as the input size n grows.
[X] Wrong: "Declaring a variable inside a loop makes the code slower by adding extra loops."
[OK] Correct: Declaring a variable inside a loop does not add more loops; it only creates the variable each time, which is very fast and does not change the main time growth.
Understanding how variable scope affects performance helps you write clear and efficient code, a skill valued in real projects and interviews.
"What if we moved the variable declared inside the loop to outside the loop? How would the time complexity change?"
Practice
Solution
Step 1: Understand local variable scope
A variable declared inside a function is local to that function only.Step 2: Check usage outside the function
Such variables cannot be accessed outside their function block.Final Answer:
It can only be used inside that function. -> Option AQuick Check:
Local variable scope = inside function only [OK]
- Thinking local variables are accessible globally
- Confusing local and global variable scopes
Solution
Step 1: Identify global variable declaration
Global variables must be declared outside all functions and blocks.Step 2: Check each option
Only int x; outside all functions declares the variable outside all functions, making it global.Final Answer:
int x; outside all functions -> Option BQuick Check:
Global variable declared outside functions [OK]
- Declaring global variables inside functions
- Declaring variables inside loops thinking they are global
int x = 5;
void func() {
int x = 10;
std::cout << x << std::endl;
}
int main() {
func();
std::cout << x << std::endl;
return 0;
}Solution
Step 1: Analyze variable shadowing in func()
Inside func(), local x = 10 shadows global x = 5, so prints 10.Step 2: Analyze main() output
After func(), main() prints global x = 5.Final Answer:
10\n5 -> Option AQuick Check:
Local shadows global, prints 10 then 5 [OK]
- Assuming global x changes inside func()
- Confusing which x is printed in main()
int main() {
std::cout << x << std::endl;
int x = 5;
return 0;
}Solution
Step 1: Check variable usage before declaration
The code tries to print x before it is declared.Step 2: Understand C++ variable initialization rules
Variables must be declared before use; using x before declaration causes error.Final Answer:
Error: x used before declaration -> Option DQuick Check:
Use after declaration required [OK]
- Assuming declaration order does not matter
- Ignoring compiler errors about undeclared variables
int x = 1;
void update() {
x = 5;
int x = 10;
std::cout << x << std::endl;
}
int main() {
update();
std::cout << x << std::endl;
return 0;
}What will be the output and why?
Solution
Step 1: Analyze variable declaration order
The line x = 5; appears before the local variable x is declared in the same function.Step 2: Understand C++ rules on variable usage
Using a variable before its local declaration in the same scope is illegal and causes a compilation error.Step 3: Reason about the error
Because local x is declared after x = 5;, the assignment tries to assign to local x before its declaration, which is invalid.Final Answer:
Compilation error due to variable redeclaration -> Option CQuick Check:
Using variable before declaration in same scope causes error [OK]
- Thinking there's a compilation error on x=5
- Believing local shadowing prevents global update before declaration
Ready to prove it?
Pass the test and this pattern moves unknown
