Bird
Raised Fist0
Cprogramming~10 mins

Array size and bounds in C - Step-by-Step Execution

Choose your learning style10 modes available
Concept Flow - Array size and bounds
Declare array with fixed size
↓
Access elements using index
↓
Check if index < size?
No→Error: Out of bounds
Yes↓
Read or write element
↓
Repeat for other indices or exit
This flow shows how arrays have a fixed size and how accessing elements must stay within valid index bounds to avoid errors.
Execution Sample
C
int arr[3] = {10, 20, 30};
int x = arr[1];
int y = arr[3];
This code declares an array of size 3, accesses a valid index 1, and then tries to access an invalid index 3.
Execution Table
StepActionIndex AccessedIndex Valid?ResultNotes
1Declare array arr with size 3--arr = {10, 20, 30}Array created with indices 0,1,2
2Access arr[1]1YesValue = 20Valid access within bounds
3Access arr[3]3NoUndefined behaviorIndex 3 is out of bounds (max index 2)
💡 Execution stops or causes error when accessing index 3 which is outside array bounds
Variable Tracker
VariableStartAfter Step 1After Step 2After Step 3
arrundefined{10, 20, 30}{10, 20, 30}{10, 20, 30}
xundefinedundefined2020
yundefinedundefinedundefinedundefined or garbage
Key Moments - 2 Insights
Why is accessing arr[3] a problem?
Because the array size is 3, valid indices are 0,1,2. Index 3 is outside bounds, causing undefined behavior as shown in step 3 of the execution table.
Does declaring arr[3] mean indices 0 to 3 are valid?
No, arr[3] means size is 3, so valid indices are 0,1,2 only. Index 3 is one past the last element, which is invalid.
Visual Quiz - 3 Questions
Test your understanding
Look at the execution table, what value is stored in x after step 2?
A10
B20
C30
DUndefined
💡 Hint
Check the 'Result' column for step 2 in the execution table.
At which step does the program access an invalid index?
AStep 1
BStep 2
CStep 3
DNo invalid access
💡 Hint
Look at the 'Index Valid?' column in the execution table.
If the array size was changed to 4, which index would be invalid?
A4
B3
C2
D1
💡 Hint
Array indices go from 0 to size-1, so index equal to size is invalid.
Concept Snapshot
Declare arrays with fixed size: int arr[3];
Valid indices: 0 to size-1
Accessing outside bounds causes undefined behavior
Always check index < size before access
No automatic bounds checking in C
Full Transcript
In C, arrays have a fixed size declared at creation. For example, int arr[3] creates an array with indices 0, 1, and 2. Accessing arr[1] is valid and returns the stored value. However, accessing arr[3] is invalid because it is outside the declared size. This causes undefined behavior, which can lead to errors or crashes. The execution table shows each step: declaring the array, accessing a valid index, and then an invalid index. Variables track the array contents and accessed values. Beginners often confuse the size with the maximum index; remember size 3 means indices 0 to 2 only. Always ensure your index is less than the array size before accessing elements.

Practice

(1/5)
1. What is the valid range of indexes for an array declared as int arr[10]; in C?
easy
A. 0 to 9
B. 1 to 10
C. 0 to 10
D. 1 to 9

Solution

  1. Step 1: Understand array size declaration

    The array arr is declared with size 10, meaning it has 10 elements.
  2. Step 2: Determine valid index range

    In C, array indexing starts at 0, so valid indexes are from 0 up to size-1, which is 9.
  3. Final Answer:

    0 to 9 -> Option A
  4. Quick Check:

    Array indexes = 0 to size-1 = 0 to 9 [OK]
Hint: Array indexes start at 0 and end at size minus one [OK]
Common Mistakes:
  • Assuming array indexes start at 1
  • Using size as the last index
  • Confusing size with maximum index
2. Which of the following is the correct way to declare an array of 5 integers in C?
easy
A. int arr(5);
B. int arr[5];
C. int arr{5};
D. int arr = 5;

Solution

  1. Step 1: Recall C array declaration syntax

    In C, arrays are declared using square brackets with the size inside, like int arr[5];.
  2. Step 2: Check each option

    int arr[5]; uses correct syntax. Options A and C use parentheses or braces which are invalid for arrays. int arr = 5; assigns an int, not an array.
  3. Final Answer:

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

    Array declaration uses square brackets [OK]
Hint: Use square brackets [] to declare array size in C [OK]
Common Mistakes:
  • Using parentheses instead of brackets
  • Using braces instead of brackets
  • Assigning a single value instead of declaring array
3. What will be the output of the following code?
int arr[3] = {10, 20, 30};
printf("%d", arr[3]);
medium
A. Undefined behavior (may print garbage or crash)
B. 0
C. Compilation error
D. 30

Solution

  1. Step 1: Analyze array size and indexing

    The array arr has size 3, valid indexes are 0, 1, 2. Accessing arr[3] is out of bounds.
  2. Step 2: Understand consequences of out-of-bounds access

    Accessing outside array bounds in C causes undefined behavior. It may print garbage value, cause crash, or unpredictable output.
  3. Final Answer:

    Undefined behavior (may print garbage or crash) -> Option A
  4. Quick Check:

    Out-of-bounds access = undefined behavior [OK]
Hint: Accessing index >= size causes undefined behavior [OK]
Common Mistakes:
  • Assuming arr[3] prints last element
  • Expecting zero instead of garbage
  • Thinking compiler catches out-of-bounds
4. Identify the error in the following code snippet:
int arr[4];
for(int i = 0; i <= 4; i++) {
    arr[i] = i * 2;
}
medium
A. Initialization of i is incorrect
B. Array size should be 5 instead of 4
C. Loop condition should be i < 4, not i <= 4
D. Multiplication by 2 is invalid

Solution

  1. Step 1: Check loop bounds against array size

    The array size is 4, so valid indexes are 0 to 3. The loop runs while i <= 4, which includes i=4, an invalid index.
  2. Step 2: Correct the loop condition

    Changing the loop condition to i < 4 ensures indexes 0 to 3 are used, avoiding out-of-bounds access.
  3. Final Answer:

    Loop condition should be i < 4, not i <= 4 -> Option C
  4. Quick Check:

    Loop index must be less than array size [OK]
Hint: Use < not <= for loop index to avoid out-of-bounds [OK]
Common Mistakes:
  • Using <= instead of < in loop condition
  • Assuming array size includes index equal to size
  • Ignoring off-by-one errors
5. Given the array declaration int nums[5] = {1, 2, 3, 4, 5};, which code snippet correctly sums all elements without causing out-of-bounds errors?
hard
A. for(int i = 0; i < 6; i++) sum += nums[i];
B. for(int i = 1; i < 5; i++) sum += nums[i];
C. for(int i = 0; i <= 5; i++) sum += nums[i];
D. for(int i = 0; i < 5; i++) sum += nums[i];

Solution

  1. Step 1: Understand array size and valid indexes

    The array nums has size 5, so valid indexes are 0 to 4.
  2. Step 2: Evaluate each loop condition

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

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

    Loop from 0 to size-1 to avoid errors [OK]
Hint: Loop from 0 to less than array size for safe access [OK]
Common Mistakes:
  • Using <= size causing out-of-bounds
  • Starting loop at 1 missing first element
  • Looping beyond array size
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