Advertisement
Guest User

Untitled

a guest
Nov 12th, 2019
319
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.29 KB | None | 0 0
  1. Pointeri – Legatura intre pointeri si tablouri
  2. • O variabila de tip pointer poate avea ca valori adrese de memorie
  3. • Declararea unei variabile de tip pointer:
  4. • tip *nume;
  5.  nume = numele var. de tip pointer
  6.  tip = reprezinta tipul valorii ce poate fi memorata la adresa indicate de pointer-ul nume
  7.  Obs: spunem ca tip este tipul de baza al pointerului
  8. • ex: int *p; //s-a declarat var. pointer cu numele p care poate avea ca valoare adresa unei zone de memorie la care se poate memora un numar intreg
  9. • Operatori pt variabile de tip pointer
  10. • Operator de referentiere / adresa (&)
  11.  Furnizeaza adresa de memorie a unei variabile
  12. • Ex: int x, *p;
  13. • p=&x; //var. pointer p primeste ca valoare adresa de memorie a var. x
  14. • Operator de dereferentiere(*)
  15.  Se aplica unei var de tip pointer si furnizeaza ca rezultat valoarea aflata in memorie la adresa indicata de pointerul p
  16. • Ex: int x=10, *p;
  17. • p=&x;
  18. • cout<<x; // se afiseaza 10
  19. • cout<<*p; // se afiseaza 10
  20. • Operator de atribuire (=)
  21.  Unei var de tip pointer I se poate atribui:
  22. • Adresa unei alte variabile de memorie (prin aplicarea operatorului adresa &)
  23. • Valoarea unei alte variabile de tip pointer, avand acelasi tip de baza
  24. o Ex: int *p, *q;
  25. o float *k;
  26. o p=q; // e corect, OK
  27. o p=k; //nu e correct, pointeri cu tipul de baza diferit, !OK
  28. • Valoarea NULL (poinerul nul)
  29. o are ca semnificatie ca el nu contine nicio adresa de memorie
  30. • Incrementarea si decrementarea unui pointer (++; --)
  31.  valoarea pointerului creste, respectiv scade cu sizeof(tip) octeti
  32. • unde tip=tipul de baza al pointerului
  33. • ex: char s[]=”program”, *p;
  34. • //s = p|r|o|g|r|a|m|\0
  35. • p=*s[4];
  36. • cout<<*p; // se va afisa ‘r’
  37. • p++; //p va avea ca valoarea adresa elementului s[5] (p==&s[5])
  38. • cout<<*p;//se va afisa ‘a’
  39. • p--; //p va avea s[3] pt p==s[4]
  40. • cout<<*p;//se va afisa ‘g’
  41. • Adunarea / scaderea unui intreg dintr-un pointer
  42.  int n;
  43.  char *p;
  44.  p+n
  45.  p-n //ambele furnizeaza ca rezultat adresa de memorie obtinuta prin adunarea sau scaderea a n*sizeof(tip) octeti
  46.  ex: char s[]=”program, *p;
  47.  p=&s[3];
  48.  p=p+2;//p==&s[5]
  49. • Scaderea a 2 pointeri
  50.  Vb de diferenta a doi pointeri in situatia in care ei contin adresele de memorie coresp. unor elemente ale unui vector
  51. • Ex: char s[]=”program”, *p, *q;
  52. • int i, j;
  53. • p=&s[i];
  54. • q=&s[j];
  55. • p-q==furnizeaza acelasi rezultat ca diferenta i-j
  56. • Numele unui vector are ca semnificatie adresa de inceput a zonei alocate elementelor acelui vector
  57. • char s[]=”program”, *p;
  58. • // s = p|r|o|g|r|a|m|\0
  59. • p=s; // I se aloca adresa de inceput a vectorului (‘p’ = prima litera din sir) //p=&s[0]
  60. • cout<<*p; // afiseaza doar ‘p’
  61. • p=&s[2];
  62. • cout<<*p; //o
  63. • Numele unui vector este un pointer constant, adica valoarea sa nu se poate modifica
  64. • Ex: char s[]=”program”, *p;
  65. • p=s;
  66. • p++;
  67. • cout<<*p; // s[1], adica r
  68. • cout<<*s; // afiseaza valoarea lui s[0], p
  69. • s++; //!!!!!!!!!!!!!! Nu se poate modifica :hecc:, op nu este permisa, nu pot sa modific var s fiind pointer constant
  70. • cout<<*(s+2);//s+2 repr adresa caracterului s[2] == ‘o’ adica &s[2]
  71. • cout<<s; //afis sirului programului
  72. • cout<<s+2; //afiseaza “ogram”
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement