#include <stdio.h>

#include <stdlib.h>  // EXIT_SUCCESS



int main(int argc, char** argv) {

  int arr[3] = {1, 2, 3};

  int *int_ptr = &arr[0];

  char *char_ptr = (char *) int_ptr;  // more "type casting" later



  printf("int_ptr: %p;  *int_ptr: %d\n", int_ptr, *int_ptr);

  int_ptr += 1;

  printf("int_ptr: %p;  *int_ptr: %d\n", int_ptr, *int_ptr);

  int_ptr += 2;  // uh oh

  printf("int_ptr: %p;   *int_ptr: %d\n", int_ptr, *int_ptr);

  

  printf("char_ptr: %p;  *char_ptr: %d\n", char_ptr, *char_ptr);

  char_ptr += 1;

  printf("char_ptr: %p;  *char_ptr: %d\n", char_ptr, *char_ptr);

  char_ptr += 2;

  printf("char_ptr: %p;  *char_ptr: %d\n", char_ptr, *char_ptr);



  return EXIT_SUCCESS;

}