Lorsque nous passons un pointeur en tant que paramètre à une méthode, nous passons en fait une copie du pointeur sur la méthode, ou nous pouvons dire que passer le pointeur est la valeur qui passe le pointeur. L'éditeur de l'erreur New Technology Channel expliquera les détails de la différence entre les références et les pointeurs en C ++. Venez jeter un œil!
Explication détaillée de la différence entre référence et pointeur dans C ++
Les références sont introduites à partir de C ++ et n'existent pas dans C. Afin de comprendre le concept de citation, vous devez d'abord comprendre la définition des variables et la différence entre les références et les variables. Il y a deux éléments de variables: le nom et l'espace.
Une référence n'est pas une variable, c'est juste un alias pour une variable, et il n'a pas d'espace indépendant. Il ne répond qu'à l'élément "Nom" de la variable, et l'élément "Space" n'est pas satisfait. En d'autres termes, une référence doit partager le même espace mémoire que la variable qu'il fait référence, et la modification de la référence est en fait une modification de la variable référencée. Et les références doivent être initialisées lorsqu'elles sont définies.
Le type de paramètre passant et points connexes:
1 passez par valeur: la valeur du paramètre formel ne peut pas être modifiée. Le paramètre réel doit initialiser le paramètre formel, et l'espace doit être alloué, puis copier le contenu du paramètre réel dans le paramètre formel.
2 Passe de référence: il n'est pas nécessaire d'allouer de l'espace lorsque le paramètre réel est initialisé.
3 Pointer Passing: Essentiellement, il est toujours passé par valeur. Lorsque le paramètre réel est initialisé, l'espace doit encore être alloué. Si vous devez modifier l'adresse du pointeur, il n'est pas possible de le passer avec un pointeur. Vous devez utiliser ** ou * &
Voici le contenu pertinent cité:
1 concept de citation
2 citations de const
3 Référence de passage en tant que paramètre
4 Référence comme valeur de retour de fonction
5. La différence entre la référence et le pointeur
1 concept de citation
Gardez simplement les points clés suivants à l'esprit:
(1) La référence est un alias pour les variables, et il n'y a pas d'espace indépendant
(2) La référence doit être partagée avec les variables qu'il fait référence
(3) les modifications d'une référence sont en fait des modifications des variables qu'il fait référence
(4) Les références doivent être initialisées lors de la définition
(5) Une fois la référence initialisée, d'autres variables ne peuvent pas être récitées.
Voir l'exemple suivant:
int main (void) {int val = 100; // int & refVal; <span style = "white-space: pre"> </span> // error, la référence doit être initialisée int & Refval = val; cout << "val =" << val << endl; Refval = 200; <span style = "blanc-espace: pre"> </span> // En fait, la variable Val a été modifiée cout << "val =" << val << endl; int Val2 = 500; Refval = Val2; <span style = "blanc-espace: pre"> </span> // Cela ne signifie pas que la variable Val2 est référencée à Val2, // signifie simplement attribuer Val2 à Refval, c'est-à-dire VAL. cout << "val =" << val << endl; retour 0; }2 citations de const
Les points clés de la citation de const sont les suivants:
(1) Comme le nom l'indique, une référence const est une référence à un objet const.
(2) Une référence const peut se référer à un objet non-Const, mais une référence non-Const ne peut pas se référer à un objet const. Voir l'exemple de fonction suivant.
int a = 200; const int & ref = a; // ok const int b = 100; int & Ref2 = b; //Erreur,
(3) La valeur de l'objet référencé par const est une constante et ne peut pas être modifiée.
const int a = 200; const int & ref = a; ref = 100; // erreur, l'objet référencé est une constante et ne peut pas être modifiée
(4) Une référence const peut se référer à des variables de différents types, mais produira une variable temporaire. comme suit:
Double A = 3,14; const int & ref = a; // ok, le processus qu'il génère est: // int tmp = a; Générez le TMP variable temporaire et les données peuvent être tronquées. // const int & ref = tmp; la référence est en fait une variable temporaire
3 Référence de passage en tant que paramètre
Passer une référence en tant que paramètre est l'un des paramètres. Il n'a pas besoin d'allouer l'espace mémoire lorsque le paramètre réel est initialisé. Voici un exemple:
void swap (int & a, int & b) {int tmp = a; a = b; b = tmp; } int main () {int x = 20; int y = 30; échange (x, y); cout << x << endl; // x = 30; cout << y << endl; // y = 20; }4 Référence comme valeur de retour de fonction
Énumérez d'abord les exemples, comme suit:
int a [] = {1,2,3,4,5,6,7,8,9,0}; int & index (int i) {return a [i]; } int main () {index (3) = 100; cout << a [3] << endl; // Sortie: 100}Il s'agit d'une autre fonction des références, où la fonction peut être placée à gauche de l'opérateur d'affectation. La fonction d'index renvoie une référence []. Les modifications de la référence modifieront le changement lui-même, donc un [3] est modifié à 100.
5. La différence entre la référence et le pointeur
(1) La référence d'accès est un accès direct et le pointeur d'accès est un accès indirect.
(2) La référence est un alias pour les variables. Il n'alloue pas son propre espace mémoire séparément, mais le pointeur a son propre espace mémoire
(3) Une fois la référence initialisée, aucune autre variable ne peut être référencée, mais le pointeur peut
(4) Utilisez les références autant que possible et utilisez des pointeurs chaque fois que vous le devez.
Merci d'avoir lu et expliqué les différences entre les références et les pointeurs en C ++ en détail. J'espère que cela peut vous aider. Merci pour votre soutien du nouveau réseau de chaînes technologiques!