Bird
Raised Fist0
DSA Cprogramming~5 mins

Array Declaration and Initialization in DSA C - Time & Space Complexity

Choose your learning style10 modes available
Time Complexity: Array Declaration and Initialization
O(n)
Understanding Time Complexity

When we create and fill an array, we want to know how long it takes as the array gets bigger.

We ask: How does the time to set up the array grow when the number of elements grows?

Scenario Under Consideration

Analyze the time complexity of the following code snippet.


int n = 5;
int arr[5];
for (int i = 0; i < n; i++) {
    arr[i] = i * 2;
}
    

This code creates an array of size 5 and fills it with values by multiplying the index by 2.

Identify Repeating Operations

Identify the loops, recursion, array traversals that repeat.

  • Primary operation: The for-loop that assigns values to each array element.
  • How many times: It runs once for each element, so n times.
How Execution Grows With Input

As the array size grows, the number of assignments grows the same way.

Input Size (n)Approx. Operations
1010 assignments
100100 assignments
10001000 assignments

Pattern observation: The time grows directly with the number of elements; doubling n doubles the work.

Final Time Complexity

Time Complexity: O(n)

This means the time to fill the array grows in a straight line with the number of elements.

Common Mistake

[X] Wrong: "Declaring an array takes no time or is instant regardless of size."

[OK] Correct: While declaration reserves space quickly, initializing each element takes time proportional to the array size.

Interview Connect

Understanding how array setup time grows helps you explain efficiency clearly and shows you know how data size affects performance.

Self-Check

"What if we initialize the array with a fixed value instead of a calculation? How would the time complexity change?"

Practice

(1/5)
1. Which of the following is the correct way to declare an integer array of size 5 in C?
easy
A. array int arr[5];
B. int arr;
C. int arr = 5;
D. int arr[5];

Solution

  1. Step 1: Understand array declaration syntax in C

    In C, to declare an array of integers with size 5, the syntax is int arr[5];.
  2. Step 2: Check each option

    int arr[5]; matches the correct syntax. Options A, B, and D are incorrect because they either miss the size, use wrong keywords, or assign a value instead of declaring an array.
  3. Final Answer:

    int arr[5]; -> Option D
  4. Quick Check:

    Array declaration = int arr[5]; [OK]
Hint: Array size goes inside square brackets after type [OK]
Common Mistakes:
  • Forgetting to specify size inside brackets
  • Using wrong keywords like 'array'
  • Assigning a value instead of declaring
2. Which of the following is the correct way to initialize an integer array with values 1, 2, 3 in C?
easy
A. int arr[3] = (1, 2, 3);
B. int arr = {1, 2, 3};
C. int arr[3] = {1, 2, 3};
D. int arr[3] = [1, 2, 3];

Solution

  1. Step 1: Recall array initialization syntax

    In C, arrays are initialized using curly braces with values inside, and size must be specified if not inferred.
  2. Step 2: Evaluate each option

    int arr[3] = {1, 2, 3}; correctly declares an array of size 3 and initializes it with values 1, 2, 3. int arr = {1, 2, 3}; misses the size, C uses parentheses instead of braces, and D uses square brackets which is invalid.
  3. Final Answer:

    int arr[3] = {1, 2, 3}; -> Option C
  4. Quick Check:

    Array init uses braces and size = int arr[3] = {1, 2, 3}; [OK]
Hint: Use curly braces {} to initialize arrays with size [OK]
Common Mistakes:
  • Using parentheses () instead of braces {}
  • Omitting array size when required
  • Using square brackets [] for initialization
3. What will be the output of the following C code?
int arr[4] = {10, 20};
for(int i = 0; i < 4; i++) {
    printf("%d ", arr[i]);
}
medium
A. 10 20 0 0
B. 10 20 0 20
C. 10 20 10 20
D. 10 20 garbage garbage

Solution

  1. Step 1: Understand partial initialization of arrays

    When an array is partially initialized in C, the remaining elements are set to zero automatically.
  2. Step 2: Trace the loop output

    arr[0] = 10, arr[1] = 20, arr[2] = 0, arr[3] = 0. The loop prints all four elements separated by spaces.
  3. Final Answer:

    10 20 0 0 -> Option A
  4. Quick Check:

    Partial init fills rest with 0 = 10 20 0 0 [OK]
Hint: Uninitialized array elements default to 0 if partially initialized [OK]
Common Mistakes:
  • Assuming uninitialized elements have garbage values
  • Confusing partial initialization with full initialization
  • Miscounting array size in loop
4. Identify the error in the following C code snippet:
int arr[3];
arr = {1, 2, 3};
medium
A. Array size is not specified
B. Cannot assign values to array after declaration using braces
C. Missing semicolon after array declaration
D. Array elements must be initialized with parentheses

Solution

  1. Step 1: Understand array assignment rules in C

    In C, arrays cannot be assigned values using braces after declaration. Initialization must happen at declaration.
  2. Step 2: Check the code snippet

    The code tries to assign values to arr using braces after declaration, which is invalid syntax and causes a compilation error.
  3. Final Answer:

    Cannot assign values to array after declaration using braces -> Option B
  4. Quick Check:

    Array assignment after declaration with {} is invalid [OK]
Hint: Initialize arrays only at declaration with braces [OK]
Common Mistakes:
  • Trying to assign arrays after declaration with {}
  • Confusing initialization with assignment
  • Using parentheses instead of braces
5. Given the following code, what will be the output?
int arr[] = {5, 10, 15};
int *ptr = arr;
for(int i = 0; i < 3; i++) {
    printf("%d ", *(ptr + i));
}

Choose the correct output.
hard
A. 5 10 15
B. 5 0 15
C. Garbage values
D. Compilation error

Solution

  1. Step 1: Understand pointer and array relationship

    In C, the name of the array is a pointer to its first element. Pointer arithmetic allows accessing elements by offset.
  2. Step 2: Trace the loop output

    Pointer ptr points to arr[0]. *(ptr + i) accesses arr[i]. Loop prints 5, 10, 15 separated by spaces.
  3. Final Answer:

    5 10 15 -> Option A
  4. Quick Check:

    Pointer arithmetic accesses array elements correctly = 5 10 15 [OK]
Hint: Array name acts as pointer to first element [OK]
Common Mistakes:
  • Confusing pointer arithmetic syntax
  • Assuming pointer points to garbage
  • Forgetting array size in loop
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