Operador de referencia en C++

Muhammad Husnain 11 diciembre 2023
  1. Usar el operador de referencia en C++
  2. Compare la variable de referencia y la variable de puntero en C++
Operador de referencia en C++

Este artículo se centrará en el operador de referencia &, también llamado operador dirección de.

Aunque el operador de referencia funciona de manera similar en varios casos, tiene pocas diferencias entre varios lenguajes de programación. Nos centraremos únicamente en sus usos en el lenguaje de programación C++.

Primero, aprenderemos su sintaxis y conceptos básicos. Luego, responderemos a la confusión común sobre el uso de operadores de referencia en diferentes contextos.

Usar el operador de referencia en C++

Sintaxis para declarar una variable de referencia:

int &ref = m;
int & ref = m;
int& ref = m;
Nota
Es obligatorio inicializar una variable de referencia en la declaración.

El operador & tiene diferentes usos y significados según el contexto en el que se utilice. La siguiente sección analiza las tareas que realiza el operador de referencia en C++.

Ejemplo:

// Simple integer type variable intialization
int m = 12;

// ref is a reference to m
int& ref = m;

// Print value of m
cout << "Original m = " << m << endl;
ref = 20;

// Print value of ref
cout << "Modified m = " << m << endl;

En el código anterior, almacenamos 12 en la variable m. A continuación, apuntamos la ref a la m usando el operador de referencia.

Aquí, apuntar significa que ref tiene la dirección de memoria de la variable m. Entonces, cuando actualizamos el valor de m, obtenemos el mismo valor actualizado a través de la variable ref, que es la variable de referencia.

En resumen, la variable ref se convirtió en un alias de otra variable, m. También podemos decir que ref es solo otro nombre para la variable real nombrada por m.

Asignamos 20 a ref en el fragmento de código anterior. Este cambio también será visible en m que tiene un valor actualizado de 20.

Producción :

Original m = 12
Modified m = 20

Compare la variable de referencia y la variable de puntero en C++

Por lo general, los alumnos confunden la variable de referencia con la variable de puntero.

En la sección anterior, discutimos la variable de referencia en detalle con ejemplos.

Para definir, una variable de puntero almacena la dirección de una variable en la memoria. Utiliza el operador de referencia para inicializar o definir sus valores.

Consulte el código a continuación para comprender el uso de & con una variable de puntero; luego, discutiremos las diferencias.

// Integer type variable intialization
int number = 88;

// Declare a pointer variable
int* ptrNumber;

// Assign the address of the "number" to "ptrNumnber"
ptrNumber = &number;

// Declare another int pointer and initialize it with the address of the number
int* pAnother = &number;

En este código, primero declaramos una variable de puntero ptrNumber y luego asignamos la dirección de number en la tercera declaración. Aquí, & sirve como el operador address of y devuelve la dirección de memoria de number, que luego se asigna al puntero ptrNumber.

La última declaración en el fragmento anterior asigna la dirección de número a otro puntero, pAnother en la declaración. Es importante tener en cuenta que las variables de puntero son diferentes de las variables de referencia.

Echemos un vistazo a las diferencias usando la tabla que se muestra a continuación.

Variable de puntero Variable de referencia
Puntero mantiene la dirección de memoria de una variable. La variable de referencia es un alias para otra variable.
Se utiliza un operador de direccionamiento indirecto * para desreferenciar un puntero. La variable de referencia es un puntero constante, que no necesita desreferenciarse.
Se puede reasignar para referirse a una variedad de elementos. Debe asignarse en el momento de la inicialización y los valores de dirección no se pueden cambiar una vez que se han formado.
Un valor NULL se puede asignar directamente a una variable de puntero. El valor NULL no se puede establecer directamente.

El operador &, cuando se usa junto con parámetros formales en una función, los convierte en parámetros de referencia. Más información sobre parámetros de referencia y valor aquí.

Muhammad Husnain avatar Muhammad Husnain avatar

Husnain is a professional Software Engineer and a researcher who loves to learn, build, write, and teach. Having worked various jobs in the IT industry, he especially enjoys finding ways to express complex ideas in simple ways through his content. In his free time, Husnain unwinds by thinking about tech fiction to solve problems around him.

LinkedIn

Artículo relacionado - C++ Operator