Array Supscripting

When selecting an element like this:

#include <stdio.h>

int main() {
  int arr[] = {1,3,5};
  printf("arr[1]: %d\n", arr[1]);
  return 0;
}
arr[1]: 3

When doing arr[i] the compiler converted to *(arr + i). Based on Array arithmetic, we know that arr + i will select the ith element and then *(...) will dereference it and get the value.

But doing so will also mean that we can do *(i + arr) hence i[arr] or 1[arr]

#include <stdio.h>

int main() {
  int arr[] = {1,3,5};

  printf("arr[1]: %d\n1[arr]: %d\n", arr[1], 1[arr]);

  return 0;
}
arr[1]: 3
1[arr]: 3

[!note]
Doing *(arr + i) will have a bit better performance comparing to arr[i] since the compiler will convert arr[i] to *(arr + i) anyways