Bird
Raised Fist0
Cprogramming~5 mins

Scope of variables - Time & Space Complexity

Choose your learning style10 modes available
Time Complexity: Scope of variables
O(n)
Understanding Time Complexity

Let's see how the time it takes to run code changes when we use variables in different places.

We want to know if where a variable is declared affects how long the program runs.

Scenario Under Consideration

Analyze the time complexity of the following code snippet.


#include <stdio.h>

void example(int n) {
    int i;
    for (i = 0; i < n; i++) {
        int temp = i * 2;
        printf("%d\n", temp);
    }
}
    

This code prints double the value of numbers from 0 to n-1, declaring a variable inside the loop.

Identify Repeating Operations

Identify the loops, recursion, array traversals that repeat.

  • Primary operation: The for-loop runs from 0 to n-1.
  • How many times: The loop runs n times, and inside each loop, the variable temp is declared and used.
How Execution Grows With Input

Each time n grows, the loop runs more times, doing the same steps inside.

Input Size (n)Approx. Operations
10About 10 times the loop runs
100About 100 times the loop runs
1000About 1000 times the loop runs

Pattern observation: The work grows directly with n; doubling n doubles the work.

Final Time Complexity

Time Complexity: O(n)

This means the time grows in a straight line with the input size n.

Common Mistake

[X] Wrong: "Declaring a variable inside the loop makes the program slower because it creates the variable every time."

[OK] Correct: In C, declaring a variable inside the loop does not add extra time for creation each time; it just allocates space on the stack each iteration, which is part of the loop's work already counted.

Interview Connect

Understanding how variable placement relates to time helps you write clear code without worrying about hidden slowdowns.

Self-Check

"What if we moved the variable temp declaration outside the loop? How would the time complexity change?"

Practice

(1/5)
1. What is the scope of a variable declared inside a function in C?
easy
A. It can be accessed only in the main function.
B. It is global and can be accessed anywhere in the program.
C. It is local to that function and cannot be accessed outside.
D. It is accessible only in loops inside the function.

Solution

  1. Step 1: Understand variable declaration inside a function

    A variable declared inside a function is created when the function starts and destroyed when it ends.
  2. Step 2: Identify the scope of such variables

    These variables are local to the function and cannot be accessed outside it.
  3. Final Answer:

    It is local to that function and cannot be accessed outside. -> Option C
  4. Quick Check:

    Local variable scope = inside function only [OK]
Hint: Local variables stay inside their function only [OK]
Common Mistakes:
  • Thinking local variables are global
  • Assuming local variables exist outside function
  • Confusing local with static variables
2. Which of the following is the correct way to declare a global variable in C?
easy
A. int x; // declared outside any function
B. int x; inside main()
C. static int x; inside a function
D. int x; inside a loop

Solution

  1. Step 1: Identify global variable declaration

    Global variables are declared outside all functions, usually at the top of the file.
  2. Step 2: Check each option

    int x; // declared outside any function declares int x; outside any function, which is correct for global scope.
  3. Final Answer:

    int x; // declared outside any function -> Option A
  4. Quick Check:

    Global variables declared outside functions [OK]
Hint: Globals declared outside all functions [OK]
Common Mistakes:
  • Declaring globals inside functions
  • Using static inside functions for globals
  • Declaring variables inside loops thinking they are global
3. What will be the output of the following C code?
int x = 5;
void func() {
    int x = 10;
    printf("%d", x);
}
int main() {
    func();
    printf(" %d", x);
    return 0;
}
medium
A. 10 10
B. 5 10
C. 5 5
D. 10 5

Solution

  1. Step 1: Analyze variable scopes in func()

    Inside func(), a local variable x is declared with value 10, which hides the global x.
  2. Step 2: Check printf outputs

    First printf prints local x (10). Then main prints global x (5).
  3. Final Answer:

    10 5 -> Option D
  4. Quick Check:

    Local hides global inside function [OK]
Hint: Local variable hides global inside function [OK]
Common Mistakes:
  • Assuming global x prints inside func()
  • Mixing order of printed values
  • Ignoring local variable shadowing
4. Identify the error in the following C code snippet:
void func() {
    printf("%d", x);
}
int main() {
    int x = 5;
    func();
    return 0;
}
medium
A. x is not declared globally, so func() cannot access it
B. Variable x is used before declaration in func()
C. Missing return type for main()
D. Syntax error in printf statement

Solution

  1. Step 1: Check variable x usage in func()

    func() tries to print x but x is declared only inside main(), so func() cannot see it.
  2. Step 2: Understand variable scope rules

    Variables declared inside main() are local to main() only, not visible in other functions.
  3. Final Answer:

    x is not declared globally, so func() cannot access it -> Option A
  4. Quick Check:

    Local variables not visible outside their function [OK]
Hint: Functions can't access locals from other functions [OK]
Common Mistakes:
  • Thinking main()'s x is global
  • Ignoring variable scope rules
  • Assuming implicit global variables
5. Consider the following C code:
int x = 1;
void outer() {
    int x = 2;
    {
        int x = 3;
        printf("%d ", x);
    }
    printf("%d ", x);
}
int main() {
    outer();
    printf("%d", x);
    return 0;
}

What is the output when this program runs?
hard
A. 1 2 3
B. 3 2 1
C. 3 3 3
D. 2 3 1

Solution

  1. Step 1: Analyze innermost block variable

    The innermost block declares x = 3, so first printf prints 3.
  2. Step 2: Analyze outer block variable

    After inner block ends, the x = 3 goes out of scope, so next printf prints outer x = 2.
  3. Step 3: Analyze global variable in main()

    Finally, main prints global x = 1.
  4. Final Answer:

    3 2 1 -> Option B
  5. Quick Check:

    Inner blocks hide outer variables [OK]
Hint: Inner block variables override outer ones [OK]
Common Mistakes:
  • Ignoring block-level scope
  • Assuming all x print same value
  • Confusing order of prints
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard