C Accessing Array Elements

Array elements are accessed using an index number inside square brackets []. Indexing starts at 0 (first element) and goes up to size - 1 (last element).


Basic Syntax

arrayName[index];    // Access element at specific position
arrayName[index] = value;    // Assign value to specific position

Example 1: Access and Print Elements

#include <stdio.h>
int main() {
int numbers[5] = {10, 20, 30, 40, 50};
// Access individual elements
printf("First element: %d\n", numbers[0]);   // Index 0
printf("Second element: %d\n", numbers[1]);  // Index 1
printf("Third element: %d\n", numbers[2]);   // Index 2
printf("Fourth element: %d\n", numbers[3]);  // Index 3
printf("Fifth element: %d\n", numbers[4]);   // Index 4
return 0;
}

Output:

First element: 10
Second element: 20
Third element: 30
Fourth element: 40
Fifth element: 50

Example 2: Modify Elements

#include <stdio.h>
int main() {
int scores[3] = {75, 80, 90};
printf("Original: %d %d %d\n", scores[0], scores[1], scores[2]);
// Modify elements
scores[0] = 95;   // Change first element
scores[1] += 5;   // Add 5 to second element
printf("Modified: %d %d %d\n", scores[0], scores[1], scores[2]);
return 0;
}

Output:

Original: 75 80 90
Modified: 95 85 90

Example 3: Loop Through Array

#include <stdio.h>
int main() {
int prices[6] = {10, 20, 30, 40, 50, 60};
// Reading all elements
printf("All prices: ");
for(int i = 0; i < 6; i++) {
printf("%d ", prices[i]);
}
// Sum all elements
int sum = 0;
for(int i = 0; i < 6; i++) {
sum += prices[i];
}
printf("\nTotal sum: %d\n", sum);
return 0;
}

Output:

All prices: 10 20 30 40 50 60
Total sum: 210

Example 4: User Input into Array

#include <stdio.h>
int main() {
int marks[5];
// Get user input
printf("Enter 5 marks:\n");
for(int i = 0; i < 5; i++) {
printf("Index %d: ", i);
scanf("%d", &marks[i]);  // & needed for scanf
}
// Display entered values
printf("\nYou entered: ");
for(int i = 0; i < 5; i++) {
printf("%d ", marks[i]);
}
return 0;
}

Example 5: Find Largest Element

#include <stdio.h>
int main() {
int arr[] = {45, 12, 89, 34, 67, 23, 99, 11};
int size = sizeof(arr) / sizeof(arr[0]);  // Calculate array size
int max = arr[0];  // Assume first is largest
for(int i = 1; i < size; i++) {
if(arr[i] > max) {
max = arr[i];
}
}
printf("Largest element: %d\n", max);
return 0;
}

Output:

Largest element: 99

Example 6: Reverse an Array

#include <stdio.h>
int main() {
int arr[] = {1, 2, 3, 4, 5};
int size = 5;
printf("Original: ");
for(int i = 0; i < size; i++) {
printf("%d ", arr[i]);
}
// Reverse the array
for(int i = 0; i < size / 2; i++) {
int temp = arr[i];
arr[i] = arr[size - 1 - i];
arr[size - 1 - i] = temp;
}
printf("\nReversed: ");
for(int i = 0; i < size; i++) {
printf("%d ", arr[i]);
}
return 0;
}

Output:

Original: 1 2 3 4 5
Reversed: 5 4 3 2 1

Access Patterns Table

PatternCodeResult
First elementarr[0]First value
Last elementarr[size-1]Last value
Every elementfor(i=0; i<size; i++)All values
Every otherfor(i=0; i<size; i+=2)Index 0,2,4…
Backwardsfor(i=size-1; i>=0; i--)Reverse order

Common Mistakes

// ❌ WRONG - Index out of bounds
int arr[5] = {1,2,3,4,5};
printf("%d", arr[5]);  // Index 5 doesn't exist (0-4 are valid)
// ❌ WRONG - Using value instead of index
int arr[5] = {1,2,3,4,5};
int x = 3;
printf("%d", arr[x]);  // This prints arr[3] = 4 (works but confusing)
// ❌ WRONG - Forgetting & in scanf
int arr[5];
scanf("%d", arr[0]);   // Wrong - missing &
scanf("%d", &arr[0]);  // Correct
// ✅ CORRECT - Always stay within bounds
printf("%d", arr[4]);  // Last element is size-1

Accessing with Pointers (Advanced)

#include <stdio.h>
int main() {
int arr[4] = {10, 20, 30, 40};
// Array name is pointer to first element
printf("arr[0] = %d\n", arr[0]);
printf("*(arr) = %d\n", *(arr));       // Same as arr[0]
printf("*(arr+2) = %d\n", *(arr+2));   // Same as arr[2]
// Both syntaxes work
printf("Value at index 3: %d = %d\n", arr[3], *(arr+3));
return 0;
}

Output:

arr[0] = 10
*(arr) = 10
*(arr+2) = 30
Value at index 3: 40 = 40

Valid Index Range

Array SizeValid IndicesInvalid Indices
int arr[5]0, 1, 2, 3, 4-1, 5, 6, 100
int arr[10]0 to 9-5, 10, 20
int arr[100]0 to 99100, 150, -1

Important: C does NOT check if index is valid. Going out of bounds causes undefined behavior (crashes, wrong data, or silent corruption).


Quick Summary

OperationCodeNotes
Access elementarr[i]i must be within 0 to size-1
Change elementarr[i] = valueValue must match array type
Loop throughfor(i=0; i<size; i++)Most common pattern
First elementarr[0]Always valid if size > 0
Last elementarr[size-1]Use sizeof to get size
Input elementscanf("%d", &arr[i])& operator required

Complete Guide to Core & Advanced C Programming Concepts (Functions, Strings, Arrays, Loops, I/O, Control Flow)

https://macronepal.com/bash/building-blocks-of-c-a-complete-guide-to-functions/
Explains how functions in C work as reusable blocks of code, including declaration, definition, parameters, return values, and modular programming structure.

https://macronepal.com/bash/the-heart-of-text-processing-a-complete-guide-to-strings-in-c-2/
Explains how strings are handled in C using character arrays, string manipulation techniques, and common library functions for text processing.

https://macronepal.com/bash/the-cornerstone-of-data-organization-a-complete-guide-to-arrays-in-c/
Explains arrays in C as structured memory storage for multiple values, including indexing, initialization, and efficient data organization.

https://macronepal.com/bash/guaranteed-execution-a-complete-guide-to-the-do-while-loop-in-c/
Explains the do-while loop in C, where the loop body executes at least once before checking the condition.

https://macronepal.com/bash/mastering-iteration-a-complete-guide-to-the-for-loop-in-c/
Explains the for loop in C, including initialization, condition checking, and increment/decrement for controlled iteration.

https://macronepal.com/bash/mastering-iteration-a-complete-guide-to-while-loops-in-c/
Explains the while loop in C, focusing on condition-based repetition and proper loop control mechanisms.

https://macronepal.com/bash/beyond-if-else-a-complete-guide-to-switch-case-in-c/
Explains switch-case statements in C, enabling multi-branch decision-making based on variable values.

https://macronepal.com/bash/mastering-conditional-logic-a-complete-guide-to-if-else-statements-in-c/
Explains if-else statements in C for decision-making and controlling program flow based on conditions.

https://macronepal.com/bash/mastering-the-fundamentals-a-complete-guide-to-arithmetic-operations-in-c/
Explains arithmetic operations in C such as addition, subtraction, multiplication, division, and operator precedence.

https://macronepal.com/bash/foundation-of-c-programming-a-complete-guide-to-basic-input-output/
Explains basic input and output in C using scanf and printf for interacting with users and displaying results.

Online C Code Compiler
https://macronepal.com/free-online-c-code-compiler-2/

Leave a Reply

Your email address will not be published. Required fields are marked *


Macro Nepal Helper