C/Visual C - Ayuda sobre punteros

   
Vista:

Ayuda sobre punteros

Publicado por Juan (4 intervenciones) el 08/05/2013 13:39:39
Buenos días, soy programador en FoxPro y ahora estoy aprendiendo algo de C++, y tengo una duda con los punteros.

Sé que guardan la dirección de memoria de una variable, pero realmente no sé para que se utiliza, me refiero a que uso se daría en la vida real.

Si alguien me puede poner un buen ejemplo para poder entenderlo todo bien se lo agradecería.

Un saludo
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Ayuda sobre punteros

Publicado por Capitan Kirk capitan.kirk09@gmail.com (94 intervenciones) el 09/05/2013 10:10:46
1. Para poder cambiar el valor de una variable pasada como parámetro a una función. Lo que recibe realmente una función es una copia del valor de la variable original. Dentro de la función puedes modificar la copia, pero estas modificaciones se perderán al salir de la función. Ahora bien, si lo que pasas es un puntero (es decir, la dirección de la variable) puedes modificar el valor de esa variable de forma indirecta. Imagina, por ejemplo, que en tu empresa te dice el jefe "Toma esta copia de la previsión de ventas para este año, incluye estos nuevos datos y mándaselo al director general" (has trabajado sobre una copia y el documento original no se ha modificado, con lo que el próximo que lo necesite tendrá el documento antiguo), o te puede decir "Ve al archivo central y añade estos nuevos datos a la previsión de ventas" (te han indicado dónde está el documento original para modificarlo, es decir, para poder modificar el original te han tenido que decir dónde está. La próxima persona que necesite el informe tendrá el documento actualizado).

2. Cuando necesitas asignar espacio para nuevos objetos o estructuras de datos, y no sabes de antemano cuántos objetos vas a necesitar, o qué tamaño tienen (como en el caso de listas enlazadas, o si el número y tamaño de los objetos va a depender de lo que vaya sucediendo durante la ejecución del programa), el sistema te reserva memoria para esos objetos llamando a las funciones para asignación dinámica de memoria (malloc en C, o new en C++). Estas funciones te devuelven un puntero al bloque de memoria reservado para el objeto.

3. Si tienes que pasar estructuras de datos como parámetro a una función, es conveniente pasar un puntero a la estructura. Si pasas la estructura tal cual, se tiene que generar una copia de la estructura en cada llamada a la función, con la consiguiente pérdida de tiempo.

Esto es lo más básico sobre punteros. Los punteros son vitales en C/C++, así que si quieres programar en estos lenguajes con un mínimo de nivel, debes dominar el tema de los punteros sí o sí.

Saludos,
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

Ayuda sobre punteros

Publicado por Juan (3 intervenciones) el 09/05/2013 11:14:08
Muchas gracias, ahora ya me ha quedado más claro el tema de los punteros, sobre todo la explicación de pasar variables a funciones y ser modificadas.

Un saludo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar