Concept

Référence (programmation)

Résumé
En programmation, une est une valeur qui est un moyen d'accéder en lecture et/ou écriture à une donnée située soit en mémoire principale soit ailleurs. Une référence n'est pas la donnée elle-même mais seulement une information sur sa localisation. Beaucoup de langages de programmation permettent l'utilisation de références, que ce soit de façon explicite ou implicite. Quand le langage de programmation dispose d'un système de typage, le type des références est construit à partir du type des objets référencés. Par exemple si le type d'un objet est A, le type de la référence à l'objet sera REF A, mais cela peut dépendre du langage. Le type de référence le moins élaboré, mais aussi le moins encadré, est le pointeur. Il s'agit simplement d'une adresse mémoire qui ne donne aucune indication sur ce qu'il référence. Les références sont souvent vues comme des noms identifiant des données. Plusieurs noms peuvent référencer la même donnée (aliasing), ce qui peut provoquer des effets de bord indésirés. L'effet le plus classique consiste à libérer l'objet par l'une de ses références sans invalider les autres références, ce qui entraîne une erreur de segmentation, lors de l'utilisation des autres références non libérées et non invalidées. En C++, les références sont déclarées par le type de la variable suivi du suffixe &. Une référence est utilisée comme une variable classique, sauf que ses données sont contenues dans la variable qu'elle désigne. Elle est donc plus simple à utiliser que les pointeurs. // 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 } Les références peuvent être supprimées et l'objet non référencé devient inaccessible s'il n'y a pas d'autre accès à cet objet.
À propos de ce résultat
Cette page est générée automatiquement et peut contenir des informations qui ne sont pas correctes, complètes, à jour ou pertinentes par rapport à votre recherche. Il en va de même pour toutes les autres pages de ce site. Veillez à vérifier les informations auprès des sources officielles de l'EPFL.