references c
Apprenez à connaître les moyens de déclarer et d'utiliser des références en C ++.
La référence est un concept majeur dans le langage de programmation C ++. Bien qu’il ne soit pas aussi puissant que les pointeurs, il nous permet néanmoins de l’utiliser pour écrire des programmes efficaces. La principale utilisation de la variable de référence consiste à transmettre des paramètres aux fonctions.
La technique populaire de passage de paramètres «passe par référence» utilise des références. Dans ce tutoriel, nous verrons ce qu'est une référence, et comment la déclarer et l'utiliser. Nous aborderons également les différences entre les pointeurs et les références ainsi que le passage et le retour d'une référence vers / depuis des fonctions.
=> Voir ici pour explorer la liste complète des didacticiels C ++.
Ce que vous apprendrez:
- Qu'est-ce qu'une référence?
- Déclaration des variables de référence
- Référence vs pointeurs
- Passer des références aux fonctions
- Renvoyer des références
- Conclusion
- lecture recommandée
Qu'est-ce qu'une référence?
La référence est un alias ou un autre nom pour une variable. Étant donné une variable avec un identifiant, nous pouvons fournir un autre identifiant à cette variable afin de pouvoir faire référence à cette variable soit avec son nom d'origine, soit avec un autre nom. Cet «autre nom» est ce que l’on appelle une référence.
Supposons que nous ayons une variable «i» de valeur 17. Si j est une référence, alors la représentation en mémoire de la variable i et de la référence j est indiquée ci-dessous.
Comme le montre la figure ci-dessus, une variable et son alias, c'est-à-dire pointent vers la même valeur.
Déclaration des variables de référence
Une référence peut être déclarée à l’aide de l’opérateur «&».
La déclaration de référence est présentée ci-dessous.
int a = 10; int& refvar = a;
Donc, dans le code ci-dessus, nous avons déclaré une variable entière avec la valeur 10. Ensuite, nous déclarons une autre variable refvar et lui assignons une variable. Notez que lors de la déclaration de refvar, nous avons utilisé l'opérateur & juste avant le nom de la variable. Cela indique que refvar est une référence à une variable déjà existante.
Nous pouvons faire référence à la variable «a» soit en utilisant le nom de variable a, soit en utilisant le nom de référence «refvar».
questions d'entrevue de test d'automatisation pour les expérimentés
Ci-dessous est un exemple simple de références:
#include #include using namespace std; int main() { int age = 22; int& numYears = age; double salary = 10000.00; double& wages = salary; cout<<'Age: '< Production:
Âge: 22 ans
Nombre d'années: 22
Salaire: 10000
Salaire: 10000
Dans le code ci-dessus, nous avons une variable age entière. Ensuite, nous déclarons une variable entière de référence numYears à la variable age. Nous avons un autre salaire variable de type double. Ensuite, nous déclarons un salaire variable de référence double au salaire variable.
Ensuite, nous imprimons les variables, d'abord l'âge puis sa référence est suivie du salaire et de sa référence. Si nous vérifions la sortie du programme, nous comprenons que la variable et la référence à elle pointent vers la même valeur et donc Age et numYears, ainsi que les salaires et traitements, ont les mêmes valeurs.
voir mon site Web dans différents navigateurs
Référence vs pointeurs
Par rapport aux pointeurs, les références sont plus sûres et plus faciles à utiliser.
Nous discuterons de quelques différences entre les pointeurs et les références:
- Contrairement aux pointeurs, les références ne peuvent pas avoir une valeur nulle. Il est obligatoire que les références se voient attribuer une valeur.
- Les références sont initialisées au moment de leur création. Contrairement à cela, les pointeurs peuvent être initialisés à tout moment et pas nécessairement pendant la déclaration.
- Les pointeurs peuvent être réaffectés facilement aux valeurs. Mais avec des références, nous ne pouvons pas faire cela. Une fois qu'une valeur de la variable est affectée, c'est-à-dire une fois qu'un alias d'une variable est créé, nous ne pouvons pas affecter une autre variable à cette référence.
- Nous n'avons pas de références nulles. Par définition, une référence est un alias de la variable et elle est initialisée lors de la création elle-même. Ainsi, il n'y a aucune chance que nous ayons une référence vide et que nous assignions plus tard une variable avec un type de données concret. En revanche, nous pouvons avoir des pointeurs vides.
En raison de ces limitations décrites ci-dessus, les références en C ++ ne peuvent pas être utilisées avec des structures de données telles qu'une liste liée. Veuillez noter qu'en Java, nous n'avons pas toutes ces restrictions ou limitations sur les références.
Passer des références aux fonctions
Dans nos précédents tutoriels sur les fonctions, nous avons déjà discuté de la technique des paramètres «passer par référence» et nous avons vu l'exemple de permutation de deux nombres en utilisant cette technique. Nous sautons l'explication de cette technique dans cette section et ne présentons à nouveau qu'une fonction de swap à titre d'exemple.
Mais cette fois, au lieu d'échanger des numéros, nous allons échanger deux chaînes.
#include #include using namespace std; void swap(char * &str1, char * &str2) { char *temp = str1; str1 = str2; str2 = temp; } int main() { char *str1 = 'references'; char *str2 = 'pointers'; cout<<'str1 = '< Production:
str1 = références str2 = pointeurs
Après échange….
str1 = pointeurs str2 = références
Donc dans ce programme, nous passons des chaînes (char *) à la fonction swap. Les paramètres formels sont deux références à une variable de type char *. Nous notons que lorsque deux valeurs sont permutées, leur modification est reflétée dans la fonction appelante car nous utilisons des références / alias pour les paramètres.
Renvoyer des références
Tout comme le retour de pointeurs à partir de fonctions, nous pouvons également renvoyer des références à partir de fonctions. Le renvoi de références à partir d'une fonction renvoie également un pointeur implicite vers la valeur de retour. Pour cette raison, une fonction renvoyant une référence peut être utilisée sur le côté gauche de l'affectation.
Prenons un exemple de retour d'une référence à partir d'une fonction.
#include using namespace std; int myarray() = {1, 0, 2, 3, 5}; int& setValues( int i ) //returns reference to the array { return myarray(i); } int main () { cout << 'myarray before change' << endl; for ( int i = 0; i < 5; i++ ) { cout << 'myarray(' << i << ') = '; cout << myarray(i) << endl; } setValues(1) = 1; setValues(3) = 8; cout << 'Value after change' << endl; for (int i = 0; i < 5; i++ ) { cout<< 'myarray(' << i << ') = '; cout << myarray(i) << endl; } return 0; }
Production:
myarray avant le changement
myarray (0) = 1
myarray (1) = 0
myarray (2) = 2
myarray (3) = 3
myarray (4) = 5
Valeur après modification
myarray (0) = 1
myarray (1) = 1
myarray (2) = 2
myarray (3) = 8
myarray (4) = 5
Une capture d'écran pour le même est montrée ci-dessous:

Comme vu dans le code ci-dessus, nous définissons une fonction setValues qui renvoie une référence et un paramètre qui est un entier. Dans la fonction, nous renvoyons simplement la référence du tableau à la position I en C ++.
Dans la fonction principale, nous imprimons les valeurs du tableau. Ensuite, en utilisant la fonction setValues, nous modifions les valeurs de deux éléments du tableau. Encore une fois, nous imprimons la valeur du tableau.
Une chose que nous devons noter avec les références est que nous pouvons avoir une fonction renvoyer une référence uniquement lorsque les données sont statiques ou globales. Il est illégal de renvoyer une référence à une variable locale en C ++.
Conclusion
Les lecteurs doivent noter que l'utilisation principale des références est de passer des paramètres aux fonctions.
Dans les didacticiels à venir, nous couvrirons les fonctions / expressions lambda en C ++ avant de passer à la programmation orientée objet en C ++.
=> Découvrez les meilleurs didacticiels de formation C ++ ici.
lecture recommandée
- Meilleure série de tutoriels C # GRATUITS: Le guide ultime de C # pour les débutants
- Pointeurs et opérations de pointeur en C ++
- Test de charge avec les didacticiels HP LoadRunner
- Variables en C ++
- Programmation orientée objet en C ++
- Tutoriel Unix Pipes: Pipes dans la programmation Unix
- Fonctions de bibliothèque en C ++
- 70+ MEILLEURS tutoriels C ++ pour apprendre la programmation C ++ gratuitement