RE:explicacion memoria dinamica
Para manipular un puntero debes tener bien definido los lugares donde vas a operar con el asi como sus movimientos.
Para declarar un puntero lo puedes hacer de la siguiente forma:
Sintaxis
<tipo>*nombre;
Ejemplo:
int*puntero; //Este es un puntero de tipo entero.
Deberas tambien asignarle memoria dinamica, puedes hacerlo de esta forma:
Sintaxis
<tipo>*nombre=new <tipo> //Declarado en ese momento
nombre=new <tipo> //Declarado en otra parte.
Ejemplo>
int*puntero=new int;
puntero=new int;
Puedes espesificar cantidades iniciales y despues variarla
Ejemplo:
Sintaxis
<tipo>*nombre=new <tipo>[cantidad]// Constituyen arreglos dinamicos
nombre=new <tipo>[cantidad]// Declarado antes
Ejemplo
int*puntero=new int[2];
puntero=new int[2];
Para eliminarlo puedes usar el delete
Sintaxis
delete nombre;
Ejemplo
delete puntero;
Asignar un puntero a otro (Tiene que ser del mismo tipo)
Sintaxis
puntero1=puntero2;
Ejemplo
numero1=numero2// Ya declarado los dos
int*numero1=numero2//Uno de ellos declarado;
Puntero vacio o nulo
Sintaxis
nombre=NULL;
Ejemplo
puntero=NULL;// Ya declarado
int*puntero=NULL;
Ejemplo de como usar un puntero como arreglo dinamico
class CPrueba
{
private:
int*numero;
int can;
public:
CPrueba()
{
cant=0;//Variable para controlar las posiciones y la cantidad de elementos que tengo
numero=new int[1];//Preparo una posicion en memoria
}
//Metodo que adiciona numeros
void Adicionar_Numeros(int n)
{
if(cant==0)
numeros[cant++]=n;
else
{
int*aux=new int[cant]//Arreglo auxiliar
for(int i=0;i<cantidad;i++)
aux[i]=numeros[i];
numeros=new int[cant+1]//Creo la posicion para el nuevo elemento
for(int i=0;i<cant;i++)
numeros[i]=aux[i];
numeros[cant++]=n;
delete aux;
}
}
};