Pointeri, adrese și valori: Diferență între versiuni

De la YO3ITI
Sari la navigare Sari la căutare
Fără descriere a modificării
Fără descriere a modificării
Linia 16: Linia 16:


<syntaxhighlight lang="console">
<syntaxhighlight lang="console">
tom@MacBook-Pro-Miron Adrese și pointeri % ./adresa_simpla  
tom@MacBook-Pro-Miron % ./adresa_simpla  
a se găsește la adresa &a: 0x102f94000
a se găsește la adresa &a: 0x102f94000
</syntaxhighlight>
</syntaxhighlight>

Versiunea de la data 23 martie 2025 17:19

Acest scurt program demonstrează diferența și asemănările dintre operatorul de referențiere & (determinarea adresei unei variabile) și dereferețiere * (accesare variabilei de la o adresă)

#include <iostream>
using namespace std;

int a = 34;

int main() {
    cout << "a se găsește la adresa &a: " << &a << endl;
    return 0;
}

Rezultatul este:

tom@MacBook-Pro-Miron % ./adresa_simpla 
a se găsește la adresa &a: 0x102f94000
#include <iostream>
using namespace std;

int valA = 10;
int valB = 92;
int* ptr = &valA; //pointerul va avea valoarea de la adresa valA
int* ptr2 = NULL;
char* car;
uint16_t* uint16t;
float* flt;

int main() {
    cout << endl;
    cout << "ce chestie ! avem un pointer ptr cu valoarea: " << *ptr << endl;
    cout << "dar adresa ptr este ptr: " << ptr << endl;
    cout << "adresa val este &val: " << &valA << endl;
    cout << "iar adresa unui pointer pointer NULL este ptr2: " << &ptr2 << endl;
    cout << "iar adresa unui pointer char este car: " << &car << endl;
    cout << "iar adresa unui pointer float este flt: " << &flt << endl;
    

    // schimbăm adresa ptr
    ptr = &valB;
    cout << "adresa ptr este acum: &val: " << ptr << endl;

    cout << endl;
    cout << "====================================" << endl;
    cout << "------- Dimensiuni variabile -------" << endl;
    cout << "====================================" << endl;
    cout << endl;

    cout << "dimensiunea unui int este de " << sizeof(int) << " octeți" << endl;
    cout << "dimensiunea unui float este de " << sizeof(float) << " octeți" << endl;
    cout << "dimensiunea unui double este de " << sizeof(double) << " octeți" << endl;
    cout << "dimensiunea unui char este de " << sizeof(char) << " octeți" << endl;
    cout << "dimensiunea unui uint16_t este de " << sizeof(uint16_t) << " octeți" << endl;

    
    cout << endl;
    cout << "===================================" << endl;
    cout << "------- Dimensiuni pointeri -------" << endl;
    cout << "===================================" << endl;
    cout << endl;
    
    cout << "dimensiunea este unui int pointer este: " << sizeof(ptr) << endl;
    cout << "dimensiunea char pointer este: " << sizeof(car) << endl;
    cout << "dimensiunea uint16_t pointer este: " << sizeof(uint16t) << endl;
    
    return 0;
}