Junior
C/C++ dilinde referans ile gösterici arasındaki farkları anlatın.
sobes.tech yapay zeka
AI'dan gelen yanıt
Bir referans, mevcut bir nesne için takma ad olarak düşünülebilir; bir gösterici, nesnenin bellek adresini içerir.
| Özellik | Referans | Gösterici |
|---|---|---|
| Başlatma | Bildirimde başlatılmalı. | Başlatılmayabilir. |
| Yeniden atama | Başlatmadan sonra yeniden atanamaz. | Başka bir nesneye işaret edebilir. |
| Null değeri | null olamaz. | nullptr (C++11) veya NULL (C/C++) olabilir. |
| Dizi indeksleme | Doğrudan gösterici aritmetiği desteklemez. | Gösterici aritmetiği destekler. |
| Operatörler | Doğrudan kullanılır (. üyeler için). |
* ile çözümleme, -> ile üyeler. |
| Boyut | Kendi boyutu yoktur, nesnenin boyutuna referans verir. | Sistemdeki adres boyutuna uygun boyuta sahiptir (genellikle 4 veya 8 bayt). |
| Bellek tahsisi | Açık bellek tahsisi/serbest bırakma gerekmez. | new/delete gerekebilir (C++'da). |
| Kullanım | Sık sık fonksiyon parametreleri olarak referans ile geçmek için kullanılır. | Dinamik bellek tahsisi, düşük seviyeli erişim için. |
// Referans kullanım örneği
int x = 10;
int& ref = x; // ref, x için takma ad
ref = 20; // x artık 20
// Gösterici kullanım örneği
int y = 30;
int* ptr = &y; // ptr, y'nin adresine işaret eder
*ptr = 40; // y artık 40
// Gösterici nullptr olabilir
int* null_ptr = nullptr;