Sunteți pe pagina 1din 14

Tema: Apuntadores..!

INTEGRANTES: -KIARA CEVALLOS -SAMUEL RODRGUEZ -EDUARDO VELARDE

CARACTERISTICAS:
Los apuntadores son variables que almacenan

direcciones de memoria. En general una variable contiene un valor especfico dependiendo de como fue declarada. Un apuntador contiene la direccin de una variable que contiene un valor especfico. Una variable se refiere directamente a un valor y un apuntador se refiere indirectamente a un valor Una variable de este tipo "apunta" o hace referencia a uno ms objetos Desde su declaracin "sabe" el tipo de objetos a que hace referencia.

Los apuntadores disponen de dos operadores: El

operador unario o mondico & devuelve la direccin de memoria de una variable; El operador de indireccin o desreferencia * devuelve el ``contenido de un objeto apuntado por un apuntador''. Operadores permitidos: asignar, sumar con contantes, restar, comparar, convertir y manejo de bits. Operadores prohibidos: multiplicar, dividir y sumar dos o ms apuntadores.

Beneficios:
Generar elementos bajo demanda, i.e. asignacin

dinmica de memoria Manipular y recorrer grandes espacios de memoria Generar estructuras de datos complejas Parmetros de entrada/salida para funciones, i.e. parmetros por referencia

Dificultades:
Programacin avanzada, catica y/o complicada Programacin ms susceptible de errores muy

difciles de depurar Dificultad para leer y comprender cdigo

USOS:
C, usa los apuntadores en forma extensiva. Por qu?

Es la nica forma de expresar algunos clculos.


Se genera cdigo compacto y eficiente. C, usa apuntadores explcitamente con:

Arreglos, Estructuras y Funciones.


El uso de apuntadores en C y C++ es muy importante

debido a que permite hacer los programas ms eficientes y ms flexibles.

Declaracin De Apuntadores:
Cuando se declara una variable, el compilador reserva un espacio de

memoria para ella y asocia el nombre de sta a la direccin de memoria desde donde comienzan los datos de esa variable. Las direcciones de memoria se suelen describir como nmeros en hexadecimal. Un apuntador es una variable cuyo valor es la direccin de memoria de otra variable. Se dice que un apuntador apunta a la variable cuyo valor se almacena a partir de la direccin de memoria que contiene el apuntador. Por ejemplo, si un apuntador p almacena la direccin de una variable x, se dice que p apunta a x. Los apuntadores como cualquier otra variable deben de ser declarados antes de que puedan ser utilizados. El tipo de un apuntador lo proporciona implcitamente el tipo de la variable a la que apunta. Los apuntadores pueden ser declarados para apuntar a objetos de cualquier clase. La sintaxis general de declaracin es: <tipo> * <variable>

Apuntadores y Funciones
Cuando C pasa argumentos a funciones, los pasa por

valor, es decir, si el parmetro es modificado dentro de la funcin, una vez que termina la funcin el valor pasado de la variable permanece inalterado. Hay muchos casos que se quiere alterar el argumento pasado a la funcin y recibir el nuevo valor una vez que la funcin ha terminado. Para hacer lo anterior se debe usar una llamada por referencia, en C se puede simular pasando un puntero al argumento. Con esto se provoca que la computadora pase la direccin del argumento a la funcin.

Para entender mejor lo anterior consideremos la funcin swap() que intercambia el valor de dos argumentos enteros:
void swap(int *px, int *py); main() { int x, y; x = 10; y = 20; printf("x=%d\ty=%d\n",x,y); swap(&x, &y); printf("x=%d\ty=%d\n",x,y); } void swap(int *px, int *py) { inttemp; temp = *px; /* guarda el valor de la direccion x */ *px = *py; /* pone y en x */ *py = temp; /* pone x en y */ }

Apuntadores y arreglos
Existe una relacin estrecha entre los punteros y los arreglos. En C, un nombre de

un arreglo es un ndice a la direccin de comienzo del arreglo. En esencia, el nombre de un arreglo es un puntero al arreglo. Considerar lo siguiente: int a[10], x; int *ap;
ap = &a[0];

/* ap apunta a la direccion de a[0] */

x = *ap;

/* A x se le asigna el contenido de ap (a[0] en este caso) */

*(ap + 1) = 100; /* Se asigna al segundo elemento de 'a' el valor 100 usando ap*/ Como se puede observar en el ejemplo la sentencia a[t] es idntica a ap+t. Se debe

tener cuidado ya que C no hace una revisin de los lmites del arreglo, por lo que se puede ir fcilmente ms alla del arreglo en memoria y sobreescribir otras cosas.

Operaciones bsicas

Declaracin Los punteros se declaran con un asterisco, de esta forma: tipo * variable; Por ejemplo: int* puntero; Se dice que la variable puntero es un puntero a enteros (apunta a un entero).

Asignacin

El valor que puede adquirir un puntero es, por ejemplo, la direccin de una variable. El operador & devuelve la direccin de una variable: puntero = &variable;
Desreferencia de un puntero

Se puede alterar la variable a la que apunta un puntero. Para ello se emplea el operador de desreferencia, que es el asterisco: *puntero = 45; En este caso, se est introduciendo un 45 en la posicin de memoria a la que apunta puntero.

Parmetros por referencia


En el pasaje por referencia se pasa a la funcin las

direcciones de memoria de las variables en cuestin en lugar de su valor. A diferencia del paso por valor, aqu no se realizan copias de las variables sino que se trabaja sobre la direccin de memoria que pasamos, lo que nos permite modificar el valor de la variable en cuestin.
Veamos esto con el mismo ejemplo que usamos antes, pero usando punteros:

Luego hacemos el llamado a la funcin de la misma

manera, pero pasando las direcciones de memoria de x e y:


Obteniendo lo siguiente al compilar el programa y

ejecutarlo:

Donde vemos que esta vez s se modific el contenido de las variables en cuestin.

S-ar putea să vă placă și