Q Es Un Puntero

Páginas: 9 (2134 palabras) Publicado: 22 de marzo de 2015
Los punteros permiten simular el paso por referencia, crear y manipular estructuras dinamicas de datos, tales como listas enlazadas, pilas, colas y árboles. Generalmente las variables contienen valores especificos. Los punteros son variables pero en vez de contener un valor especifico, contienen las direcciones de las variables a las que apuntan. Para obtener o modificar el valor de la variablea la que apuntan se utiliza el operador de indirección. Los punteros, al ser variables deben ser declaradas como punteros antes de ser utilizadas.

Sintaxis
int *ptrID, ID;
ID = 8;
ptrID = &ID; // puntero a ID
ptrID es un puntero a int, mientras que la variable ID es solo una variable del tipo int. Todo puntero debe ser precedido por un asterisco (*) en la declaración.

Se puede declarar más deun puntero en la misma sentencia. En el ejemplo que sigue se ve la declaración de dos punteros a int.

int *ptrY, *ptrX;
Operadores
Existen dos operadores a tener en cuenta cuando trabajamos con punteros. El operador de dirección (&) que devuelve la dirección de memoria de su operando y el operador de indirección (*) que devuelve un alias para el objeto al cual apunta el operando del puntero.

Enel siguiente ejemplo vemos como se inicializa una variable X con el valor 15. Luego se crea un puntero a int y por último el puntero pasa a apuntar a la variable X. Esto es, ptrX es un puntero a X.

int X = 15;
int *ptrX;
ptrX = &X;
Punteros y vectores (arrays)
Los vectores son punteros constantes. Un vector sin subindice es un puntero al primer elemento del vector. Una matriz es un vector devectores. (Ej: int M[3][3];) de manera que en cada elemento del primer vector "se cuelga" otro vector, pudiendo hacer así referencia a filas y columnas.

int X[15];
int *ptrX;
ptrX = &X; // ptrX recibe la dirección del primer elemento ( 0 ) de X
Así como también podría escribirse

int X[15];
int *ptrX;
ptrX = &X[0]; // ptrX es igual a la dirección del primer elemento de X
Se pueden utilizardistintos elementos del vector teniendo en cuenta la sintaxis de punteros.

int X[15], Y, *ptrX;
ptrX = X;

Y = *( ptrX + 7 );
En este caso puede verse que Y toma el valor del elemento 7 del vector X, siendo 7 el desplazamiento dentro del vector. El operador de indirección queda fuera del paréntesis porque tiene una prioridad superior a la del operador +. De no existir los paréntesis, se sumaria 7 alelemento X[0]. Teniendo en cuenta que los vectoresson punteros constantes, el nombre del vector puede tratarse como un puntero:

Y = *( X + 7 );
Aritmética de Punteros
Al usar punteros a matrices, hay que tener en cuenta que la aritmética cambia sensiblemente.

#include

using std::cout;
using std::endl;

void main()
{
int X[6] = { 1, 2, 3, 4, 5, 6 };
int *prtX;

prtX =X; // incializo el valor del puntero.

cout << endl << *prtX;
prtX += 2;
cout << endl << *prtX;
prtX -= 2;
cout << endl << *prtX;
prtX++;
cout << endl << *prtX;
}

atte: Oscar Torres & David Paz
En el siguiente código, primero se crea un puntero a un arreglo de 6 elementos y si inicializa el puntero prtX al primer elemento del arreglo X[0]. Si tenemos en cuenta que elsiguiente ejemplo se ejecuta en una computadora con enteros de 4 bytes, el segundo elemento de la matriz tendrá en memoria un desplazamiento de 4 bytes, el 2 de ocho y asi sucesivamente. La operación prtX += 2; produce un desplazamiento llevándolo al 3 elemento dentro del arreglo. Debe entenderse que prtX ahora apunta a una dirección de memoria y la instrucción cambia esta dirección de memoriasumándole 2 multiplicado por el tamaño del tipo de dato del arreglo que en este supuesto sería de 4. (dir = ( dir + 2 * 4 )), dando por resultado un desplazamiento de 8 bytes. Sería igual que ejecutar la operación prtX = &X[2];. La operación prtX -= 2 obedece a la misma lógica estableciendo el puntero al primer elemento del array X[0] y el operador ++ modifica el puntero desplazándolo 4 bytes y...
Leer documento completo

Regístrate para leer el documento completo.

Estos documentos también te pueden resultar útiles

  • Punteros
  • Punteros
  • Punteros
  • Punteros
  • Puntero
  • Punteros
  • Punteros
  • Los Punteros Laser

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS