elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Estamos en la red social de Mastodon


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Pointers.duda
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Pointers.duda  (Leído 1,683 veces)
astroman20

Desconectado Desconectado

Mensajes: 2



Ver Perfil
Pointers.duda
« en: 11 Agosto 2017, 04:57 am »

Alguien me puede decir concretamente para que son los punteros, hasta ahora he hecho pseudocodiguillos sin necesidad de los punteros, creo que mi pregunta se dirige mas al uso practico de ellos, y si es posible que me den ejemplos no muy complejos, ya que ya se la definicion correcta, pero cuando los utilizo siempre tengo problemas de compilacion. :rolleyes: se que es tonto pero no se si pueda seguir programando sin usarlos...


En línea

ivancea96


Desconectado Desconectado

Mensajes: 3.412


ASMático


Ver Perfil WWW
Re: Pointers.duda
« Respuesta #1 en: 11 Agosto 2017, 12:25 pm »

Un ejemplo simple: Para trabajar con memoria dinámica, trabajas con punteros, pues es lo que necesitas: un puntero a un bloque de memoria.

Luego, en C++, hay constructores, constructores de copia, constructores de movimiento y destructores. Estas funciones no las llamas tú; se llaman solas en el momento adecuado. Utilizando punteros, evitas llamar, por ejemplo, constructores de copia. Además, como el puntero puede no apuntar a un objeto, tienes la posibilidad de construir el objeto en el momento justo en el que lo necesites.

Imaginate un array de 5 elementos:
Código
  1. Obj *array = new Obj[5];

Esos 5 elementos han sido construidos. Imagina ahora que quieres incrementar a 6 el tamaño. Tienes que mover o copiar uno a uno los elementos. Mover es algo relativamente rápido. Pero copiar puede ser muy pesado, y no todas las clases se pueden mover. Una opción aquí, es guardar un array de punteros:
Código
  1. Obj **array = new Obj*[5];
  2.  
  3. for(int i=0; i<5; i++){
  4.    array[i] = new Obj();
  5. }

Así, cuando se crea el nuevo array de 6 elementos, solo vas a tener que copiar los punteros (que no son más que números), y evitas copiar todos los objetos. La diferencia de rendimiento es muy grande.

En cualquier caso, no te preocupes. ya encontrarás el momento para usarlos cuando los necesites.

Así como detalle, una lista enlazada, ¿cómo la harías?


En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Pointers & Offsets
Ingeniería Inversa
calk9 8 12,111 Último mensaje 13 Diciembre 2011, 04:40 am
por calk9
frame pointers?
Programación General
aixeiger 2 2,229 Último mensaje 21 Marzo 2013, 17:55 pm
por aixeiger
VB.NET PointerWrite pointers LVL4
Programación Visual Basic
jonnyHS 6 5,744 Último mensaje 9 Octubre 2013, 23:45 pm
por jonnyHS
4 pointers?
Ingeniería Inversa
nevachana 4 2,312 Último mensaje 26 Diciembre 2015, 18:02 pm
por nevachana
Pointers
Programación C/C++
josephb401 5 2,261 Último mensaje 27 Abril 2016, 21:56 pm
por josephb401
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines