Hack x Crack - Comunidad de Seguridad informática

Programación => C / C++ => Mensaje iniciado por: gigalomaniac en Diciembre 29, 2016, 11:34:57 pm

Título: Apuntador y Referencia
Publicado por: gigalomaniac en Diciembre 29, 2016, 11:34:57 pm
¿Cual es la diferencia entre estos dos?. Se que un apuntador guarda la dirección de memoria de una variable y que la referencia es un alias de una variable y que se usa para poder cambiar el valor de la variable en una función.
¿Entonces cual es la diferencia si las hace lo mismo?.
Título: Re:Apuntador y Referencia
Publicado por: Jen en Diciembre 30, 2016, 02:33:07 am
En c++ un apuntador es considerado un tipo de variable, que como bien dices contiene una dirección de memoria.


Las referencias yo las entiendo como un mecanismo que te permiten saber la dirección de memoria de una variable en un momento determinado, por ejemplo, cuando se evalúa una expresión o cuando pasas un argumento a una subrutina. No tienen la versatilidad de una variable apuntador en cuanto a operaciones.

Uno de los usos más habituales es el de pasar un argumento “por referencia” a una subrutina. A la práctica es lo mismo que pasar la dirección de memoria de la variable. No obstante, el lenguaje te permite abstraerte de crear una variable de tipo apuntador, pasarla como argumento etc. El compilador hace ese trabajo en tiempo de compilación y se lo ahorra al programador.


Sintaxis

Crear una variable de tipo apuntador:
Código: C++
  1. int * variableA;

Cabecera de un procedimiento con un argumento pasado por referencia y llamada:
Código: C++
  1. void procedimiento(char &variable);
  2. char  variableB = 'a';
  3. procedimiento(varaibleB);

Utilizar el mecanismo de referencia en la evaluación de una expresión:
Código: C++
  1. char  variableC = 'a';
  2. int variableD = variableC&;  // Contiene la dirección de memoria de variableC


Links de posible interés:
http://stackoverflow.com/questions/57483/what-are-the-differences-between-a-pointer-variable-and-a-reference-variable-in (http://stackoverflow.com/questions/57483/what-are-the-differences-between-a-pointer-variable-and-a-reference-variable-in)

https://www3.ntu.edu.sg/home/ehchua/programming/cpp/cp4_PointerReference.html (https://www3.ntu.edu.sg/home/ehchua/programming/cpp/cp4_PointerReference.html)

http://www.cplusplus.com/articles/ENywvCM9/ (http://www.cplusplus.com/articles/ENywvCM9/)
Título: Re:Apuntador y Referencia
Publicado por: gigalomaniac en Diciembre 30, 2016, 08:49:15 pm
Muchas gracias. Estaba viendo que por ejemplo con los apuntadores puedes hacer cosas como arreglos de cadenas o incluso arreglos de funciones, cosa que con los apuntadores no.
Título: Re:Apuntador y Referencia
Publicado por: ravenheart en Diciembre 31, 2016, 03:32:37 pm
Código: C++
  1. int variableD = variableC&;  // Contiene la dirección de memoria de variableC
Nunca había visto nada igual. Creo que lo que querías poner es:

Código: C++
  1. char* variableD = &variableC;