Saltar al contenido

La dirección y el valor de una variable de referencia C++

Esta sección ha sido evaluado por especialistas para que tengas la seguridad de la exactitud de nuestra esta reseña.

Solución:

Sé que la dirección de una variable de referencia no se puede cambiar una vez configurada,

Las referencias no tienen nada que ver con las direcciones. No piense en las referencias como indicadores especiales.

A menos que esté hablando de cómo un el compilador podría implementar referencias. Pero este es un nivel completamente diferente de abstracción. A nivel de programador de C++, no está viendo el lenguaje desde el mismo punto de vista que un escritor de compilador; no existe tal cosa como una “dirección de variable de referencia”. Los objetos tienen direcciones y una referencia es solo una forma diferente de nombrar un objeto.

O, como me gusta explicarlo a los principiantes, una referencia es el objeto.

pero cuando ejecuto el comando, ¿cómo cambia el valor de mi referencia pero la dirección es la misma?

En la siguiente línea:

int &ref = a;   //&ref is 0x28fee

tu estas declarando ref ser una referencia a a. Usando la explicación de arriba, ref es a. Entonces, cuando continúas y escribes &ref después (usando el & carácter para invocar el operador de dirección, en lugar de declarar una referencia), lo que sucede es equivalente a lo que sucede al escribir &a. Por lo tanto, no es de extrañar que el resultado sea idéntico. Es el mismo objeto, por lo que la dirección debe ser la misma.

ref = b;        //value of ref = 5, address is still 0x28fee

Esto es lo mismo que escribir a = b;. Le asigna el valor de b para aporque ref es solo otra forma de decir a. No se cambian las direcciones cuando se asignan valores a ints.

Por último, ¿es correcto suponer que el signo “&” es el mismo que usamos en los punteros?

No, en absoluto. Reiterando mi punto de arriba: & tiene diferentes significados en C++. Lo usas para declarar referencias. o para tomar direcciones de objetos. En realidad, hay aún más significados, considerando que & es también el operador AND bit a bit, como en a & b. Pares de &es decir &&amplíe la lista de significados posibles para incluir el operador AND lógico y las referencias de valor r de C++11.


Desde el punto de vista de la enseñanza, es por supuesto desafortunado que & está sobrecargado para declaraciones de referencia y el operador de dirección. Por lo que sé, & fue elegido para las referencias porque en ese entonces era difícil agregar nuevas palabras clave (como ref) a C++ ya que la compatibilidad con versiones anteriores de C era una gran preocupación en ese momento, y agregar ref como palabra clave habría significado que el código C como int ref = 0; ya no compilaría.

C++ tuvo que introducir al menos algunas palabras clave nuevas (p. ej. throw), pero en determinados casos era técnicamente posible y/o políticamente necesario prescindir de ellos.

cuando ejecuto el comando, ¿cómo cambia el valor de mi referencia pero la dirección es la misma?

la referencia es un alias, cuando asignas valor a ref en realidad lo asignas a la variable a. ¿Por qué esperarías que cambiara la dirección?

o tal vez no debería cambiar el valor de a a 5

esto es correcto, cuando cambia el valor de referencia ref en su ejemplo, también puede sustituir ref para aasí que tienes a = b.

Por último, ¿es correcto suponer que el signo “&” es el mismo que usamos en los punteros?

No estoy seguro de lo que preguntas aquí, & se usa para indicar que desea una referencia, no se usa aquí para tomar la dirección de la variable a.

Sección de Reseñas y Valoraciones

Si tienes algún reparo o disposición de ascender nuestro crónica puedes realizar una glosa y con placer lo analizaremos.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *