TutorialsArena

C Pointers and Arrays: Understanding the Relationship and Usage

Learn how pointers and arrays are interconnected in C programming. This guide explores how to use pointers to efficiently access and manipulate array elements, including working with large and multi-dimensional arrays.



C Pointers and Arrays

In C, pointers and arrays are closely related, and you can use pointers to access and manipulate array elements efficiently. This is particularly useful when working with large arrays or two-dimensional arrays.

Accessing Arrays Using Loops

Consider the following array:

Syntax

int myNumbers[4] = {10, 20, 30, 40};
int i;

for (i = 0; i < 4; i++) {
    printf("%d\\n", myNumbers[i]);
}
Output

10
20
30
40

Accessing Memory Addresses

Instead of printing array values, you can print their memory addresses:

Syntax

int myNumbers[4] = {10, 20, 30, 40};
int i;

for (i = 0; i < 4; i++) {
    printf("%p\\n", &myNumbers[i]);
}
Output

0x7ffe70f9d8f0
0x7ffe70f9d8f4
0x7ffe70f9d8f8
0x7ffe70f9d8fc

Pointer and Array Relationship

In C, the name of an array is actually a pointer to its first element:

Syntax

int myNumbers[4] = {10, 20, 30, 40};

// Print the memory address of the array and its first element
printf("%p\\n", myNumbers);
printf("%p\\n", &myNumbers[0]);
Output

0x7ffe70f9d8f0
0x7ffe70f9d8f0

Accessing Array Elements Using Pointers

You can use pointers to access array elements:

Syntax

int myNumbers[4] = {10, 20, 30, 40};

// Access array elements using pointers
printf("%d\\n", *myNumbers);
printf("%d\\n", *(myNumbers + 1));
Output

10
20

Using Loops with Pointers

Here’s how to loop through an array using a pointer:

Syntax

int myNumbers[4] = {10, 20, 30, 40};
int *ptr = myNumbers;
int i;

for (i = 0; i < 4; i++) {
    printf("%d\\n", *(ptr + i));
}
Output

10
20
30
40

Modifying Array Elements with Pointers

Pointer arithmetic allows you to modify array elements:

Syntax

int myNumbers[4] = {10, 20, 30, 40};

// Modify values using pointers
*myNumbers = 15;
*(myNumbers + 1) = 25;

printf("%d\\n", *myNumbers);
printf("%d\\n", *(myNumbers + 1));
Output

15
25

Efficiency and Use Cases

Using pointers to access and manipulate arrays can be more efficient for large arrays or multi-dimensional arrays. It is also common to use pointers for accessing strings, which are essentially arrays in C.