Pointers and arrays let you work directly with memory locations. This helps you handle data efficiently and understand how computers store information.
Pointers and arrays in C
/* Define an array and a pointer to its first element */ int numbers[5] = {10, 20, 30, 40, 50}; int *pointer_to_numbers = numbers; /* Access elements using pointer arithmetic */ int first = *pointer_to_numbers; // 10 int second = *(pointer_to_numbers + 1); // 20
An array name like numbers acts like a pointer to its first element.
You can move the pointer to access other elements by adding an index.
int values[3] = {5, 10, 15}; int *ptr = values; // Access first element int first_value = *ptr; // 5 // Access second element int second_value = *(ptr + 1); // 10
int *ptr = NULL; // Accessing elements here is unsafe because array is empty.
int single_element[1] = {42}; int *ptr = single_element; int value = *ptr; // 42 // Moving pointer beyond this is unsafe.
int data[4] = {1, 2, 3, 4}; int *ptr = data + 3; // points to last element int last_value = *ptr; // 4
This program shows how to access and modify array elements using pointers. It prints the array elements first using normal array indexing, then using pointer arithmetic. Finally, it changes the third element through the pointer and prints the updated array.
#include <stdio.h> int main() { int numbers[5] = {10, 20, 30, 40, 50}; int *pointer_to_numbers = numbers; // points to first element printf("Array elements using array syntax:\n"); for (int i = 0; i < 5; i++) { printf("numbers[%d] = %d\n", i, numbers[i]); } printf("\nArray elements using pointer arithmetic:\n"); for (int i = 0; i < 5; i++) { printf("*(pointer_to_numbers + %d) = %d\n", i, *(pointer_to_numbers + i)); } // Change third element using pointer *(pointer_to_numbers + 2) = 100; printf("\nAfter changing third element via pointer:\n"); for (int i = 0; i < 5; i++) { printf("numbers[%d] = %d\n", i, numbers[i]); } return 0; }
Time complexity to access any element by pointer or array index is O(1).
Space complexity is the same for arrays and pointers; pointers just hold an address.
Common mistake: moving pointer beyond array bounds causes undefined behavior.
Use pointers when you want efficient access or to pass arrays to functions without copying.
Pointers can point to the first element of an array.
You can access array elements by moving the pointer with arithmetic.
Be careful not to go outside the array limits with pointers.