SoloCodigo

Programación General => C/C++ => Mensaje iniciado por: solarin en Martes 13 de Noviembre de 2007, 11:45

Título: Dudas Sobre Punteros
Publicado por: solarin en Martes 13 de Noviembre de 2007, 11:45
Si tengo el siguiente puntero :
Código: Text
  1.  
  2. unsigned int * pointer;
  3.  
  4.  
si realizo
Código: Text
  1.  
  2. pointer++;
  3.  
  4.  

cuantos bytes estoy avanzando?
 -El tamaño del unsigned int, simplemente un byte, 4 ?


Por otro lado, lei que no es seguro para un metodo devolver un puntero a un objeto que a sido creado en la pila. Pero no me quedo para nada claro el xq. Alguien me podria resolver la duda?

Gracias.
Título: Re: Dudas Sobre Punteros
Publicado por: Eternal Idol en Martes 13 de Noviembre de 2007, 12:00
Cita de: "solarin"
Si tengo el siguiente puntero :
unsigned int * pointer;
si realizo
pointer++;

cuantos bytes estoy avanzando?
 -El tamaño del unsigned int, simplemente un byte, 4 ?

Gracias.
El tamaño de unsigned int (que es en PCs 32 y 64 bits, 4 bytes), comprobacion:

Código: Text
  1.  
  2.   unsigned int *pointer = 0;
  3.   for (int x = 0; x < 5; x++, pointer++)
  4.   {
  5.     printf("0x%X\r\n", pointer);
  6.   }
  7.  
  8.  

Cita de: "solarin"
Por otro lado, lei que no es seguro para un metodo devolver un puntero a un objeto que a sido creado en la pila. Pero no me quedo para nada claro el xq. Alguien me podria resolver la duda?

La pila se usa para las variables locales justamente y en cuanto retornas a otra funcion no podes asumir que tu parte de la pila va a seguir siendo valida sino todo lo contrario, seguramente sea usada por otra parte de tu codigo (eso lo determina el compilador). Por algo un compilador inteligente como el VC++ te dice:

warning C4172: returning address of local variable or temporary
Título: Re: Dudas Sobre Punteros
Publicado por: solarin en Martes 13 de Noviembre de 2007, 12:03
Muchisimas gracias.