#include <stdio.h>


int main(){
/*declare 3 char arrays  of size 5 of type char*/
  char data1[5];
  char data2[5];
  char data3[5];

  
  int i;
  //intialize each array with a b c d e
    printf("##############before: data1#############\n");
  printf("Location         Value\n");
  for (i = 0; i < 5 ; i++){
    data1[i] = 'a' + i;
    printf("%x         %c\n",&data1[i], data1[i]);
 
  }
  //overwrite data2 beyond its locations by making the index < 10
  //instead of index < 5
  printf("###############before: data2############\n");
  for (i = 0; i < 10 ; i++){
    data2[i] = 'a' + i;
    printf("%x         %c\n",&data2[i], data2[i]);
 
  }
  printf("#############before: data3##############\n");
  for (i = 0; i < 5 ; i++){
    data3[i] = 'a' + i;
    printf("%x         %c\n",&data3[i], data3[i]);
 
  }

  //notice how data1 gets overwritten due to data2 initialize no check
  //for array outbounds
  printf("##############after: data1#############\n");
  printf("Location         Value\n");
  for (i = 0; i < 5 ; i++){
   
    printf("%x         %c\n",&data1[i], data1[i]);
 
  }

    printf("##############after: data2#############\n");
  for (i = 0; i < 5 ; i++){
  
    printf("%x         %c\n",&data2[i], data2[i]);
 
  }
    printf("##############after: data3#############\n");
  for (i = 0; i < 5 ; i++){
   
    printf("%x         %c\n",&data3[i], data3[i]);
 
  }
 

  
   return 0;
}
