Bird
Raised Fist0
Cprogramming~10 mins

One-dimensional arrays in C - Step-by-Step Execution

Choose your learning style10 modes available
Concept Flow - One-dimensional arrays
Declare array
↓
Allocate memory for elements
↓
Assign values to each index
↓
Access elements by index
↓
Use elements in operations
↓
End of array usage
This flow shows how a one-dimensional array is declared, filled with values, accessed by index, and used in operations.
Execution Sample
C
int arr[5];
arr[0] = 10;
arr[1] = 20;
arr[2] = 30;
int x = arr[1];
This code declares an array of 5 integers, assigns values to the first three elements, and reads the second element into variable x.
Execution Table
StepActionArray StateVariable ValuesOutput
1Declare array arr of size 5[_, _, _, _, _]arr declared
2Assign arr[0] = 10[10, _, _, _, _]arr[0]=10
3Assign arr[1] = 20[10, 20, _, _, _]arr[1]=20
4Assign arr[2] = 30[10, 20, 30, _, _]arr[2]=30
5Read arr[1] into x[10, 20, 30, _, _]x=20
6End of execution[10, 20, 30, _, _]x=20Program ends
💡 All assignments done and value read; program ends.
Variable Tracker
VariableStartAfter Step 2After Step 3After Step 4After Step 5Final
arr[0]_1010101010
arr[1]__20202020
arr[2]___303030
arr[3]______
arr[4]______
x____2020
Key Moments - 3 Insights
Why does arr[3] still show '_' after all assignments?
Because we only assigned values to arr[0], arr[1], and arr[2]. The other elements remain uninitialized, shown as '_'. See execution_table rows 2-4.
Why can we access arr[1] after assigning it?
Once arr[1] is assigned a value (step 3), we can read it anytime (step 5). The variable x gets the value 20 from arr[1].
What happens if we try to access arr[5]?
Accessing arr[5] is out of bounds since array size is 5 (indices 0 to 4). This causes undefined behavior in C, so we avoid it.
Visual Quiz - 3 Questions
Test your understanding
Look at the execution_table at step 4, what is the value of arr[2]?
A20
B_
C30
D10
💡 Hint
Check the 'Array State' column at step 4 in execution_table.
At which step is the variable x assigned a value?
AStep 5
BStep 3
CStep 2
DStep 4
💡 Hint
Look at the 'Variable Values' column for x in execution_table.
If we assign arr[4] = 50 at step 6, what would be the new array state?
A[10, 20, 30, 50, _]
B[10, 20, 30, _, 50]
C[50, 20, 30, _, _]
D[10, 20, 30, _, _]
💡 Hint
Remember array indices start at 0; arr[4] is the fifth element.
Concept Snapshot
One-dimensional arrays in C:
- Declared as type name[size], e.g. int arr[5];
- Elements accessed by zero-based index: arr[0], arr[1], ...
- Assign values with arr[index] = value;
- Uninitialized elements hold garbage values (shown as '_');
- Accessing out-of-bounds index causes undefined behavior.
Full Transcript
This lesson shows how to use one-dimensional arrays in C. First, we declare an array with a fixed size. Then, we assign values to specific positions using their index, starting at zero. We can read values from the array by using the same index. Unassigned elements remain uninitialized and should not be used. Accessing outside the array size is unsafe. The execution table traces each step, showing how the array and variables change. The variable tracker highlights the values of each element and variable after each step. Key moments clarify common confusions like uninitialized elements and safe access. The quiz tests understanding of array states and variable assignments. The snapshot summarizes the main points for quick review.

Practice

(1/5)
1. What is the starting index of a one-dimensional array in C?
easy
A. 0
B. 1
C. -1
D. Depends on the array size

Solution

  1. Step 1: Understand array indexing in C

    In C, arrays always start indexing from 0, meaning the first element is at index 0.
  2. Step 2: Confirm the starting index

    This is a fixed rule in C and does not depend on array size or other factors.
  3. Final Answer:

    0 -> Option A
  4. Quick Check:

    Array indexing starts at 0 [OK]
Hint: Remember: C arrays always start at zero index [OK]
Common Mistakes:
  • Thinking arrays start at 1 like in some other languages
  • Assuming negative indexes are valid
  • Believing index depends on array size
2. Which of the following is the correct way to declare an integer array of size 5 in C?
easy
A. int arr = 5;
B. int arr();
C. array int arr[5];
D. int arr[5];

Solution

  1. Step 1: Recall C array declaration syntax

    In C, arrays are declared by specifying the type, name, and size in square brackets, like int arr[5];
  2. Step 2: Check each option

    int arr[5]; matches the correct syntax. int arr(); uses parentheses which is for functions. int arr = 5; assigns a single int, not an array. array int arr[5]; uses invalid keyword 'array'.
  3. Final Answer:

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

    Array declaration uses square brackets [OK]
Hint: Use square brackets for array size in declaration [OK]
Common Mistakes:
  • Using parentheses instead of square brackets
  • Assigning a single value instead of declaring array
  • Using invalid keywords like 'array'
3. What will be the output of the following code?
int arr[3] = {10, 20, 30};
printf("%d", arr[1]);
medium
A. 10
B. 30
C. 20
D. Compilation error

Solution

  1. Step 1: Identify the array elements and indexes

    The array arr has elements: arr[0]=10, arr[1]=20, arr[2]=30.
  2. Step 2: Understand the printf statement

    printf prints the value at arr[1], which is 20.
  3. Final Answer:

    20 -> Option C
  4. Quick Check:

    arr[1] = 20 [OK]
Hint: Remember array index 1 is second element [OK]
Common Mistakes:
  • Confusing index 1 with index 0
  • Expecting output 10 or 30 incorrectly
  • Thinking code causes compilation error
4. Find the error in this code snippet:
int arr[4];
arr[4] = 10;
medium
A. Array index out of bounds
B. Missing semicolon
C. Wrong data type
D. No error

Solution

  1. Step 1: Check array size and indexing

    The array arr has size 4, so valid indexes are 0,1,2,3 only.
  2. Step 2: Identify the invalid index usage

    arr[4] accesses the fifth element, which is outside the array bounds causing undefined behavior.
  3. Final Answer:

    Array index out of bounds -> Option A
  4. Quick Check:

    Index must be less than array size [OK]
Hint: Index must be less than array size [OK]
Common Mistakes:
  • Using index equal to array size
  • Ignoring zero-based indexing
  • Assuming no error for out-of-bounds access
5. Given the array declaration int nums[5] = {1, 2, 3, 4, 5};, which code snippet correctly calculates the sum of all elements?
hard
A. int sum = 0; for(int i = 0; i <= 5; i++) sum += nums[i];
B. int sum = 0; for(int i = 0; i < 5; i++) sum += nums[i];
C. int sum = 0; for(int i = 1; i < 5; i++) sum += nums[i];
D. int sum = 0; for(int i = 0; i < 4; i++) sum += nums[i];

Solution

  1. Step 1: Understand array size and valid indexes

    The array nums has 5 elements with indexes 0 to 4.
  2. Step 2: Analyze each loop condition

    int sum = 0; for(int i = 0; i <= 5; i++) sum += nums[i]; uses i <= 5 which accesses nums[5] (out of bounds). int sum = 0; for(int i = 0; i < 5; i++) sum += nums[i]; uses i < 5 which correctly iterates from 0 to 4. int sum = 0; for(int i = 1; i < 5; i++) sum += nums[i]; starts at 1, missing nums[0]. int sum = 0; for(int i = 0; i < 4; i++) sum += nums[i]; stops at 4, missing nums[4].
  3. Final Answer:

    int sum = 0; for(int i = 0; i < 5; i++) sum += nums[i]; -> Option B
  4. Quick Check:

    Loop from 0 to less than size sums all elements [OK]
Hint: Loop from 0 to less than array size for all elements [OK]
Common Mistakes:
  • Using <= size causing out-of-bounds access
  • Starting loop at 1 missing first element
  • Stopping loop early missing last element
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