Punteros
Completion requirements
14. Arreglos de punteros.
NO es lo mismo un puntero a un arreglo, que un arreglo de punteros!!
Un arreglo de punteros, no es otra cosa que una variable que tiene espacios consecutivos asignados en la memoria ( por ser arreglo) y que almacena direcciones de memoria ( por ser puntero)
La sintaxis es la esperada:
tipo puntero [cantidad_de_valores];
Veamos un ejemplo:
#include <iostream>
using namespace std;
int main(int argc, char *argv[]) {
float *pa;//declaro puntero a float
cout<<sizeof(float)<<endl;
pa=new float[5];//con new reservo 5 espacios consecutivos
// pero regreso un puntero al primero!!
for(int i=0;i<5;i++)cin>>*pa[i];
for(int i=0;i<5;i++)cout<<pa[i]<<"\t"<<&pa[i]<<endl;
return 0;
}
Se puede ver en la salida claramente que los espacios son consecutivos, separados por 4 bytes ( tammaño de float) y que en este caso NO apuntan a nada, lógicamente.
![](https://aulavirtual.fio.unam.edu.ar/pluginfile.php/201337/mod_book/chapter/1649/image.png)
Veamos el siguiente código:
#include <iostream>
using namespace std;
int main(int argc, char *argv[]){
float *px;
px=new float[5];//Declaro arreglo de punteros CONSECUTIVOS
float *pa[5];//Declaro arreglo de punteros <-Esto es nuevo!!
cout<<sizeof(float)<<endl;
//Espacios NO consecutivos ( cada vez que ejecuto new) .
for(int i=0;i<5;i++){
pa[i]=new float;//dinámicamente resevo UN espacio en memoria.
cin>>*pa[i];//cada puntero ahora apunta al dato ingresado:inicializo
}
for(int i=0;i<5;i++)cout<<*pa[i]<<" "<<pa[i]<<endl;//Espacios consecutivos.
for(int i=0;i<5;i++)
cin>>*(px+i);//cada puntero ahora apunta al dato ingresado
for(int i=0;i<5;i++)cout<<*(px+i)<<" "<<(px+i)<<endl;
return 0;
}
![](https://aulavirtual.fio.unam.edu.ar/pluginfile.php/201337/mod_book/chapter/1649/image%20%282%29.png)
Algo como :
- espacio solicitado con new, como new float[5] => asigna 5 espacios consecutivos!!!
- float *pa[5] no tiene new!! NO reserva espacio!! solo DECLARA UN ARREGLO DE PUNTEROS
La salida de este código sería para entradas 1,2,3,4,5,6,7,8,9,10
![](https://aulavirtual.fio.unam.edu.ar/pluginfile.php/201337/mod_book/chapter/1649/imagen.png)
![](https://aulavirtual.fio.unam.edu.ar/pluginfile.php/201337/mod_book/chapter/1649/image%20%281%29.png)