File: Stare vježbe/vjezbe08/50__pointeri.c

  1. /*
  2.   50__pointeri.c
  3.   Uvodjenje pointera (pokazivaca)
  4.   -----
  5.   Pokazivac na TIP je varijabla koja sadrzi adresu varijable tipa TIP.
  6.   Deklaracija pokazivaca:
  7.   TIP* p_var;
  8.   Pokazivac cemo inicijalizirati adresom neke varijable tipa TIP.
  9. */
  10.  
  11. #include <stdio.h>
  12.  
  13. int main()
  14. {
  15. int n;
  16. /* Deklaracija pokazivaca p1 i p2 na tip int */
  17. int *p1;
  18. int* p2;
  19.  
  20. printf("Unesite broj: ");
  21. scanf("%d", &n);
  22. printf("-> n = %d, &n = %d\n", n, &n);
  23. /* Pokazivac p1 inicijaliziramo adresom varijable n, do koje dolazimo
  24.   upotrebom operatora & (tzv. adresni operator) */
  25. p1 = &n;
  26. /* Operator * zove se operator dereferenciranja i pomocu njega mozemo
  27.   dohvatiti vrijednost koja se nalazi na odredjenoj adresi */
  28. printf("-> p1 = %d, *p1 = %d, &p1 = %d\n", p1, *p1, &p1);
  29. /* Pokazivacu p2 pridruzujemo vrijednost pokazivaca p1, pa ce sada
  30.   p1 i p2 oboje "pokazivati" na varijablu n */
  31. p2 = p1;
  32. printf("-> p2 = %d, *p2 = %d, &p2 = %d\n", p2, *p2, &p2);
  33.  
  34. printf("\nUnesite novu vrijednost broja: ");
  35. scanf("%d", p1);
  36. printf("-> n = %d, &n = %d\n", n, &n);
  37. printf("-> p1 = %d, *p1 = %d, &p1 = %d\n", p1, *p1, &p1);
  38. printf("-> p2 = %d, *p2 = %d, &p2 = %d\n", p2, *p2, &p2);
  39.  
  40. printf("\nNakon izvrsavanja *p2=314:\n");
  41. *p2=314;
  42. printf("-> n = %d, &n = %d\n", n, &n);
  43. printf("-> p1 = %d, *p1 = %d, &p1 = %d\n", p1, *p1, &p1);
  44. printf("-> p2 = %d, *p2 = %d, &p2 = %d\n", p2, *p2, &p2);
  45.  
  46. return 0;
  47. }
  48.