[C con Clase] Problemas y dudas varias con punteros.

Steven Davidson srd4121 en njit.edu
Jue Abr 30 21:20:56 CEST 2009


Hola Edmundo,

Edmundo Cuadriello Narvaez wrote:
>  
> Holas, una disculpa estaba editando el codigo y se me reenvio el
> correo:
>  
> pero corrijo tu mismo codigo,   checa donde esten las etiquetas @ECN

[CORTE]

> 
>     #include <iostream>
> 
>     using namespace std;
> 
>     int main(void)
>     {
>         int *pInt;
> 
>         for(int i = 0; i < 10; i++)
>         {
>             pInt = new int[i + 1];
>             *pInt++ = i*2;
>         }
> 
>         cout << pInt[1] << endl;
>         //@ECN  pInt no existe , dado que fue creado dentro del AMBITO
>     del FOR, por lo tanto cuando termina el for se elimina dicha
>     variable pointer local (dentro del FOR) .. luego entonces pInt que
>     pertenece al MAIN, no ha sido asignada a algun espacio de memoria,
>     por lo tanto te regresa basura :D
>      

Me temo que esto no es correcto. El puntero 'pInt' fue declarada en el 
ámbito de 'main()' y no en el del bucle 'for'. Por lo tanto, no hay 
problemas de ámbito. Creo que tu comentario radica en que piensas que 
existen dos punteros 'pInt'; pero esto no es así.

Lo que sí es cierto es que se crean varios bloques de memoria 
dinámicamente dentro del bucle 'for'. Sin embargo, aquí tampoco hay 
problemas de ámbito, porque a las operaciones no se aplican estas reglas 
de ámbito.


Espeor haber aclarado la inquietud.

Steven





Más información sobre la lista de distribución Cconclase