La variable de referencia no es más que un contenedor alrededor de un puntero con algunas funciones adicionales y algunas limitadas para proporcionar la seguridad en el programa.
Funcionalidad adicional:
- Typecast forma una variable a su referencia es interna.
Ex:
- ¿Cuáles son los algoritmos que debo aprender para comenzar a estudiar la inteligencia artificial?
- ¿Qué pasaría si pudiéramos demostrar que AGI está más allá del poder computacional de la máquina Turing?
- ¿Qué pasaría si un procesador pudiera procesar más rápido que la velocidad de la luz?
- ¿Cuál es el mejor lenguaje de codificación para las cosas matemáticas? ¿Dónde puedo aprenderlo?
- Cómo encontrar el límite superior de una secuencia recursiva
intercambio nulo (int & a, int & b)
{
int tmp = a;
a = b;
b = tmp;
}
//Llamada de función:
int main ()
{
int a = 5, b = 6;
intercambio (a, b);
std :: cout << a << b; // Imprime 65
devuelve 0;
}
En contraste, si se hubiera hecho con punteros:
intercambio nulo (int * a, int * b)
{
int tmp = * a;
* a = * b;
* b = tmp;
}
//Llamada de función:
int main ()
{
int a = 5, b = 6;
intercambio (& a, & b);
std :: cout << a << b; // Imprime 65
devuelve 0;
}
Entonces, el código se ve limpio. No es necesario escribir más * (operador de referencia) y & (operador de referencia).
- En cuanto a la seguridad: puede hacer * (a + 1) y puede acceder a la ubicación inaccesible. (Debería dar una falla de segmentación en el caso ideal). Pero no puede hacer esto con la variable de referencia.
Limitaciones:
- No puede usar la aritmética de puntero en las variables de referencia.
- Solución: como la aritmética de puntero solo es válida para los elementos de tipo contenedor, C ++ proporciona un iterador para eso y se puede usar la aritmética con eso, pero de manera limitada para proporcionar la seguridad.