Swiftorial Logo
Home
Swift Lessons
Matchups
CodeSnaps
Tutorials
Career
Resources

Pointers and Arrays in C

Introduction to Pointers

Pointers are one of the most powerful features in C. They are variables that store the memory address of another variable. Understanding pointers is essential for working efficiently with arrays, dynamic memory, and for implementing data structures.

Introduction to Arrays

An array is a collection of variables of the same type stored in contiguous memory locations. Arrays are used to store multiple values in a single variable, instead of declaring separate variables for each value.

Pointers and Arrays

Pointers and arrays are closely related in C. When you declare an array, the name of the array acts as a pointer to the first element of the array.

Example:

int arr[5] = {1, 2, 3, 4, 5};
int *p = arr;

In this example, arr is an array of 5 integers, and p is a pointer to the first element of arr.

Accessing Array Elements using Pointers

You can use pointers to access elements of an array. Here is how you can do it:

Example:

#include <stdio.h>

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

  for(int i = 0; i < 5; i++) {
    printf("%d ", *(p + i));
  }

  return 0;
}

In this example, *(p + i) is used to access the elements of the array arr. The output will be:

1 2 3 4 5

Pointer Arithmetic

Pointer arithmetic is a key feature when dealing with arrays. You can perform operations like addition and subtraction on pointers.

Example:

#include <stdio.h>

int main() {
  int arr[5] = {10, 20, 30, 40, 50};
  int *p = arr;

  printf("First element: %d\n", *p);
  p++;
  printf("Second element: %d\n", *p);

  return 0;
}

In this example, the pointer p initially points to the first element of the array. After p++, it points to the second element of the array.

Multidimensional Arrays and Pointers

Pointers can also be used with multidimensional arrays. Here is an example:

Example:

#include <stdio.h>

int main() {
  int arr[2][3] = {{1, 2, 3}, {4, 5, 6}};
  int (*p)[3] = arr;

  for(int i = 0; i < 2; i++) {
    for(int j = 0; j < 3; j++) {
      printf("%d ", p[i][j]);
    }
    printf("\n");
  }

  return 0;
}

In this example, p is a pointer to an array of 3 integers. The nested loops are used to access each element of the 2D array.

Conclusion

Pointers and arrays are fundamental concepts in C that are closely related. Understanding how to use pointers to interact with arrays can greatly enhance your ability to manipulate data and perform complex operations efficiently.