[Índice][Previo] [Siguiente]

Operaciones con punteros

Un puntero es un tipo de dato similar a un entero, y hay un conjunto de operaciones definidas para punteros:

Veamos un ejemplo de utilización de punteros:

#include <iostream.h>

main()
{
  int vector[3];
  int* princPunt = vector;
  int* finPunt = &vector[2];

  vector[2] = 15;
  cout << *(princPunt+2) << '\t' << *finPunt <<'\n';

  if (princPunt == finPunt)
    cout << " Esto no puede suceder " << '\n';

  cout << "Numero de elementos \t" <<finPunt-princPunt << '\n';
}


El resultado de la ejecución de este programa es:

15      15
Numero de elementos     2
Veamos cómo trabaja este programa:

Siempre que se realiza una operación aritmética sobre un puntero, sumando o restando un entero, el puntero se incrementa o decrementa un número apropiado de sitios tal que el nuevo valor apunta a la variable que está n elementos (no n bytes) antes o después que el dado. De la misma forma, al restar dos punteros se obtiene el número de objetos entre las dos localizaciones. Finalmente, dos punteros son iguales si y sólo si apuntan a la misma variable (el valor de las direcciones es el mismo). No son necesariamente iguales si sus valores indirectos son los mismos, ya que estas variables podrían estar en diferentes localizaciones de memoria.

La siguiente tabla resume los operadores que manipulan punteros:

Operador Acción
*p Contenido
&x Puntero a un objeto
p[i] Elemento de un vector
p->m Selección de miembros de una clase
++p Preincremento al siguiente elemento
p++ Postincremento al siguiente elemento
--p Predecremento al elemento anterior
p-- Postdecremento al elemento anterior
p += n Incremento en n elementos
p -= n Decremento en n elementos
p+n Offset en n elementos
p-n Offset en n elementos
new T Reserva de memoria para el objeto T
new T[n] Reserva memoria para un vector de n objetos de tipo T
delete p Libera la memoria reservada para p
delete [] p Libera la memoria reservada para un vector de objetos

[Índice][Previo] [Siguiente]


Última modificación: 2-4-97

Comentarios, sugerencias, ideas...

© Beatriz Fuentes Arenaz, 1996-1997

Free Web Hosting