Tech

How to use pointers with arrays and strings?

January 13, 2024

In C, an array name is essentially a pointer to the first element of the array. When you declare an array like int numbers[5];, numbers is a pointer pointing to the first element of the array. Therefore, numbers is equivalent to &numbers[0].

Now, let's understand the relationship between array subscript notation and pointers:

numbers[i] is equivalent to *(numbers + i). This is because numbers + i calculates the address of the i-th element, and *(numbers + i) dereferences that address, giving you the value at that position. Here's an example to illustrate:

#include <stdio.h>

int main() {
    int numbers[5] = {1, 2, 3, 4, 5};

    printf("%d\n", numbers[2]);       // Output: 3
    printf("%d\n", *(numbers + 2));   // Output: 3

    return 0;
}

In the above example, numbers[2] and *(numbers + 2) both give you the value at the 3rd element of the array.

Pointers and Strings (char arrays): Strings in C are essentially arrays of characters. Let's say you have a string char str[] = "Hello";.

Accessing characters: str[i] is equivalent to *(str + i). This is similar to the array scenario we discussed earlier. Here's an example with strings:

#include <stdio.h>

int main() {
    char str[] = "Hello";

    printf("%c\n", str[1]);       // Output: e
    printf("%c\n", *(str + 1));   // Output: e

    return 0;
}

In this example, str[1] and *(str + 1) both give you the second character of the string.

Conclusion: Understanding the relationship between pointers and arrays/strings is crucial in C and C++ programming. It allows you to manipulate data more efficiently and provides a deeper insight into memory management.

Thank you for reading 😁