0

Aprendi punteros y se que trabaja con las direcciones de memoria, lo he usado muy poco, me gustaria saber si tiene algún uso a gran escala ?

jc_delgado
  • 29
  • 1
  • 4
  • 1
    Los punteros son son un mecanismo básico de trabajo en lenguajes de medio/bajo nivel. No se entiende lo de *un uso a gran escala* ?? –  Feb 23 '17 at 05:47
  • 1
    muchos miles de punteros hacen falta para que te llegue este comentario. – rnrneverdies Feb 23 '17 at 07:12
  • 1
    Es como preguntar para que sirven los tornillos en la industria automovilistica. No se si me explico. – Daniel Faro Feb 23 '17 at 07:15
  • Aunque opino que, efectivamente, esta pregunta se basa en opiniones, deberíamos ser un poco más benévolos con los nuevos usuarios si queremos que la comunidad crezca. Por otro lado hay ciertas preguntas que tiene sentido responderlas ya que hay gente que se encuentra perdida durante su fase de formación y responder a preguntas como estas ayudan a que vuelva a encontrar su camino. – eferion Feb 23 '17 at 08:24
  • 2
    Es una pregunta un poco extraña... es como preguntar "*¿Para que sirven los números de pasaporte o las matrículas de coche?*". Te invito a echar un vistazo a [esta respuesta](http://es.stackoverflow.com/questions/46909/cual-es-la-diferencia-entre-int-e-int/46931#46931). – PaperBirdMaster Feb 23 '17 at 09:08

1 Answers1

4

Los punteros se usan generalmente para dos motivos:

  • compartir información
  • polimorfismo

El primer caso es sencillo de ver. Si tienes un objeto que va a ser accedido desde múltiples módulos lo normal es trabajar con punteros para evitar la copia y duplicación sistemática del objeto (solo hay una copia del objeto y se crean punteros apuntando a dicho elemento).

El segundo es un poco más complejo pero básicamente lo que permite es almacenar en un array genérico objetos de diferentes tipos, tratando dichos objetos de una forma genérica sin importar su tipo concreto. Para que este mecanismo funcione es necesario que todos los objetos a almacenar en la lista posean una herencia común, ya sea una clase base o una interfaz.

¿Uso a gran escala? Partiendo de la base de que múltiples objetos de la librería estándar usan punteros (std::string, std::map, std::vector, std::list, std::shared_ptr, ...) y que muchos de estos objetos se pueden encontrar en la práctica totalidad de los programas comerciales programados con C++ te puedes hacer una idea de que el uso de los punteros es totalmente generalizado.

Lo importante no es si un programa usa o no punteros (que seguramente los use), lo importante es aprender a distinguir situaciones en las que el uso de punteros está recomendado de aquellas en las que su uso está totalmente desaconsejado.

eferion
  • 49,291
  • 5
  • 30
  • 72