Olarak programlama , bir referans okuma ve / veya yazma erişimi için bir araç olan bir değer verileri halinde bulunan ana bellek veya başka bir yerde. Referans, verinin kendisi değil, sadece konumu hakkındaki bilgidir. Birçok programlama dili , açıkça veya örtük olarak referansların kullanımına izin verir.
Programlama dili bir yazım sistemine sahip olduğunda, referans tipi, referans alınan nesnelerin türünden oluşturulur. Örneğin, bir nesnenin türü A ise, nesneye yapılan başvurunun türü REF A olacaktır, ancak bu dile bağlı olabilir.
En az ayrıntılı, ancak aynı zamanda en az çerçevelenen referans türü işaretçidir . Bu sadece neye atıfta bulunduğuna dair hiçbir gösterge vermeyen bir hafıza adresidir.
Referanslar genellikle verileri tanımlayan isimler olarak görülür. Birkaç isim aynı verilere ( takma ad ) başvurabilir ve bu da istenmeyen yan etkilere neden olabilir . En klasik etki, diğer referansları geçersiz kılmadan nesnenin referanslarından biri ile serbest bırakılmasıdır, bu da serbest bırakılmayan ve geçersiz kılınmayan diğer referansları kullanırken bir bölümleme hatasına yol açar .
C ++ 'da başvurular, değişkenin türüne ve ardından & sonekine göre bildirilir. Bir referans, verilerinin atadığı değişkende yer alması dışında, klasik bir değişken gibi kullanılır. Bu nedenle kullanımı işaretçilerden daha kolaydır.
// reçoit une référence sur un entier(int) qui est incrémenté de 1 void incrementer_ref(int& ref) { ref++; } // reçoit un pointeur sur un entier(int) et incrémente sa valeur pointée de 1 void incrementer_ptr(int* ptr) { (*ptr)++; } int main() { // version avec une référence int a = 5; incrementer_ref(a); // a vaut 6 // version avec un pointeur int b = 5; incrementer_ptr(&b); // b vaut 6 }Referanslar silinebilir ve referansta bulunulmayan nesneye, o nesneye daha fazla erişim yoksa erişilemez hale gelir. Erişilemez olsa da, nesnenin işgal ettiği yer hala rezerve edilebilir. Bu nedenle , bu erişilemez nesne tarafından serbest bırakılan alanı kurtarmak ve yeniden tahsis edilmesine izin vermek için bir çöp toplayıcıya ihtiyacımız var . Çöp toplayıcı yoksa veya çöp toplayıcı tam değilse (çünkü dil yazılmamışsa), bir bellek sızıntısı olabilir .