references c
Conozca las formas de declarar y usar referencias en C ++.
La referencia es un concepto importante en el lenguaje de programación C ++. Aunque no es tan fuerte como los punteros, nos permite usarlo para escribir programas eficientes. El uso principal de la variable de referencia es pasar parámetros a funciones.
La popular técnica de paso de parámetros 'pasar por referencia' hace uso de referencias. En este tutorial, veremos qué es una referencia y cómo declararla y usarla. También discutiremos las diferencias entre punteros y referencias, así como pasar y devolver una referencia a / desde funciones.
=> Consulte aquí para explorar la lista completa de tutoriales de C ++.
Lo que vas a aprender:
- ¿Qué es una referencia?
- Declaración de variables de referencia
- Referencia vs punteros
- Pasar referencias a funciones
- Referencias que regresan
- Conclusión
- Lectura recomendada
¿Qué es una referencia?
La referencia es un alias u otro nombre para una variable. Dada una variable con un identificador, podemos proporcionar otro identificador a esta variable para que podamos referirnos a esta variable con su nombre original u otro nombre. Este 'otro nombre' es lo que se llama como referencia.
Considere que tenemos una variable 'i' con valor 17. Si j es una referencia, entonces la representación en memoria de la variable i y la referencia j se muestra a continuación.
Como se muestra en la figura anterior, una variable y su alias, es decir, un punto de referencia al mismo valor.
Declaración de variables de referencia
Una referencia se puede declarar utilizando el operador '&'.
La declaración de referencia se muestra a continuación.
|_+_|Entonces, en el código anterior, hemos declarado una variable entera con valor 10. Luego declaramos otra variable refvar y le asignamos una variable. Tenga en cuenta que al declarar refvar, hemos utilizado el operador & justo antes del nombre de la variable. Esto indica que refvar es una referencia a una variable ya existente.
Podemos referirnos a la variable 'a' usando el nombre de variable a o usando el nombre de referencia 'refvar'.
prueba de generación de datos en pruebas de software
A continuación se muestra un ejemplo simple de referencias:
|_+_|Producción:
Edad: 22
NumAños: 22
Salario: 10000
Salarios: 10000
En el código anterior, tenemos una edad variable entera. A continuación, declaramos una variable entera de referencia numYears a la variable age. Tenemos otro salario variable de tipo doble. A continuación, declaramos un salario variable de doble referencia al salario variable.
A continuación, imprimimos las variables, primero edad luego su referencia es seguida por salario y su referencia. Si comprobamos la salida del programa, entendemos que la variable y la referencia a ella apuntan al mismo valor y, por lo tanto, Edad y numAños, así como salario y salarios, tienen los mismos valores.
Referencia vs punteros
En comparación con los punteros, las referencias son más seguras y fáciles de usar.
Discutiremos algunas diferencias entre punteros y referencias:
- A diferencia de los punteros, las referencias no pueden tener un valor nulo. Es obligatorio que las referencias tengan asignado un valor.
- Las referencias se inicializan en el momento en que se crean. A diferencia de esto, los punteros se pueden inicializar en cualquier momento y no necesariamente durante la declaración.
- Los punteros se pueden reasignar fácilmente a los valores. Pero con referencias, no podemos hacer esto. Una vez que se asigna un valor de la variable, es decir, una vez que se crea un alias de una variable, no podemos asignar otra variable a esta referencia.
- No tenemos referencias nulas. Por definición, una referencia es un alias de la variable y se inicializa durante la propia creación. Por lo tanto, no hay posibilidad de que tengamos una referencia nula y luego le asignemos una variable con un tipo de datos concreto. Por el contrario, podemos tener punteros vacíos.
Debido a estas limitaciones discutidas anteriormente, las referencias en C ++ no se pueden usar con estructuras de datos como una lista enlazada. Tenga en cuenta que en Java, no tenemos todas estas restricciones o limitaciones en las referencias.
Pasar referencias a funciones
En nuestros tutoriales anteriores sobre funciones, ya hemos discutido la técnica de parámetro 'pasar por referencia' y hemos visto el ejemplo de intercambio de dos números usando esta técnica. Omitimos la explicación de esta técnica en esta sección y solo presentamos una función de intercambio una vez más como ejemplo.
Pero esta vez, en lugar de intercambiar números, intercambiaremos dos cadenas.
|_+_|Producción:
str1 = referencias str2 = punteros
Después del intercambio….
str1 = punteros str2 = referencias
Entonces, en este programa, pasamos cadenas (char *) a la función de intercambio. Los parámetros formales son dos referencias a una variable de tipo char *. Observamos que cuando se intercambian dos valores, su modificación se refleja en la función de llamada, ya que estamos usando referencias / alias para los parámetros.
Referencias que regresan
Al igual que devolver punteros de funciones, también podemos devolver referencias de funciones. Devolver referencias de una función también devuelve un puntero implícito al valor devuelto. Por este motivo, se puede utilizar una función que devuelva una referencia en el lado izquierdo de la asignación.
Veamos un ejemplo de devolver una referencia de una función.
|_+_|Producción:
myarray antes del cambio
myarray (0) = 1
myarray (1) = 0
myarray (2) = 2
myarray (3) = 3
myarray (4) = 5
Valor después del cambio
myarray (0) = 1
myarray (1) = 1
myarray (2) = 2
myarray (3) = 8
myarray (4) = 5
La captura de pantalla de la misma se muestra a continuación:
mejor revisión de software de texto a voz
Como se ve en el código anterior, definimos una función setValues que devuelve una referencia y un parámetro que es un número entero. Dentro de la función, simplemente devolvemos la referencia de la matriz a la posición I en C ++.
En la función principal, imprimimos los valores de la matriz. Luego, usando la función setValues, cambiamos los valores de dos elementos en la matriz. Nuevamente imprimimos el valor de la matriz.
Una cosa que debemos tener en cuenta con las referencias es que podemos hacer que una función devuelva una referencia solo cuando los datos son estáticos o globales. Es ilegal devolver una referencia a una variable local en C ++.
Conclusión
Los lectores deben tener en cuenta que el uso principal de referencias es para pasar parámetros a funciones.
En los próximos tutoriales, cubriremos las funciones / expresiones lambda en C ++ antes de pasar a la programación orientada a objetos en C ++.
=> Vea los mejores tutoriales de capacitación de C ++ aquí.
Lectura recomendada
- La mejor serie de tutoriales de C # GRATIS: la guía definitiva de C # para principiantes
- Punteros y operaciones de puntero en C ++
- Pruebas de carga con los tutoriales de HP LoadRunner
- Variables en C ++
- Programación orientada a objetos en C ++
- Tutorial de Unix Pipes: Pipes en la programación Unix
- Funciones de biblioteca en C ++
- 70+ MEJORES Tutoriales de C ++ para aprender programación C ++ GRATIS