InformaticăliceuClasa 10dificil
Pointeri în C++ - Ghid Complet pentru Începători
Înțelege pointerii: declarare, operatori & și *, aritmetică, pointeri la funcții și erori comune.
2 luni în urmă
0 vizualizări
35 minute
Pointeri în C++
Ce este un Pointer?
Un pointer este o variabilă care stochează adresa de memorie a altei variabile.
Declarare și Operatori
1#include <iostream> 2using namespace std; 3 4int main() { 5 int x = 10; 6 int* ptr = &x; // ptr stochează adresa lui x 7 8 cout << "Valoarea lui x: " << x << endl; 9 cout << "Adresa lui x: " << &x << endl; 10 cout << "Valoarea lui ptr: " << ptr << endl; 11 cout << "Valoarea de la adresa ptr: " << *ptr << endl; 12 13 *ptr = 20; // Modifică x prin pointer 14 cout << "Noua valoare a lui x: " << x << endl; 15 16 return 0; 17}
Pointeri și Vectori
1int arr[] = {10, 20, 30, 40, 50}; 2int* ptr = arr; // arr decay to pointer 3 4cout << *ptr << endl; // 10 5cout << *(ptr + 1) << endl; // 20 6cout << ptr[2] << endl; // 30 7 8// Parcurgere cu pointer 9for (int* p = arr; p < arr + 5; p++) { 10 cout << *p << " "; 11}
Alocarea Dinamică
1// Alocare pentru o singură variabilă 2int* p = new int; 3*p = 42; 4delete p; 5 6// Alocare pentru un vector 7int* arr = new int[10]; 8for (int i = 0; i < 10; i++) { 9 arr[i] = i * i; 10} 11delete[] arr;
Pointeri la Funcții
1int aduna(int a, int b) { return a + b; } 2int scade(int a, int b) { return a - b; } 3 4int main() { 5 int (*operatie)(int, int); // Pointer la funcție 6 7 operatie = aduna; 8 cout << operatie(5, 3) << endl; // 8 9 10 operatie = scade; 11 cout << operatie(5, 3) << endl; // 2 12 13 return 0; 14}
Referințe vs Pointeri
1int x = 10; 2 3int* ptr = &x; // Pointer - poate fi nullptr, poate fi reasignat 4int& ref = x; // Referință - trebuie inițializată, nu poate fi reasignată 5 6*ptr = 20; // x devine 20 7ref = 30; // x devine 30
Erori Comune
1// 1. Pointer neinițializat 2int* p; // Conține adresă aleatoare! 3// *p = 5; // EROARE! 4 5// 2. Memory leak 6int* p = new int(10); 7p = new int(20); // Memoria pentru 10 nu mai poate fi eliberată! 8 9// 3. Dangling pointer 10int* p = new int(10); 11delete p; 12// *p = 20; // EROARE! p indică memorie eliberată 13 14// 4. Double delete 15int* p = new int(10); 16delete p; 17// delete p; // EROARE!
Tutorialul te-a ajutat?
Dacă ai nevoie de ajutor personalizat, găsește un profesor calificat pentru meditații
