/* Demonstrira pokazivacku aritmetiku */

#include <stdio.h>

int main() {
  char s[] = "abcde";
  int t[] = {1, 2, 3, 4, 5};
	
  /* Inicijalizujmo pokazivace ps i pt na pocetke nizova s i t */
  char* ps = &s[0];
  int* pt =  &t[0];
	
  /* Pokazivace je moguce sabirati sa celim brojevima i 
	 od njih je moguce oduzimati cele brojeve*/
  /* Ispisimo vrednosti pokazivaca */
  printf("ps = %p\n", ps);
  printf("ps+1 = %p\n", ps+1);
  printf("ps+2 = %p\n", ps+2);
  printf("ps-1 = %p\n", ps-1);
  printf("ps-2 = %p\n", ps-2);

	
  /* Prilikom sabiranja pokazivaca i celih brojeva, 
	 dodaje se velicina odgovarajuceg tipa. */
  printf("pt = %p\n", pt);
  printf("pt+1 = %p\n", pt+1);
  printf("pt+2 = %p\n", pt+2);
  printf("pt-1 = %p\n", pt-1);
  printf("pt-2 = %p\n", pt-2);
	
  /* Na pokazivace je moguce primenjivati i operatore ++ i -- */
  for (ps = s; *ps; ps++)
	putchar(*ps);
  putchar('\n');
	
  /* Slicno, dva pokazivaca istog tipa se mogu oduzimati. Prilikom sracunavanja
	 rezultata, uzima se u obzir velicina tipa. */
  ps = &s[3];
  printf("s = %p\n", s);
  printf("ps = %p\n", ps);
  printf("ps - s = %d\n", ps - s);
  pt = &t[3];
  printf("t = %p\n", t);
  printf("pt = %p\n", pt);
  printf("pt - t = %d\n", pt - t);	

  return 0;
}