Bachiller en computación

Solo disponible en BuenasTareas
  • Páginas : 5 (1237 palabras )
  • Descarga(s) : 0
  • Publicado : 20 de agosto de 2012
Leer documento completo
Vista previa del texto
APUNTADORES
Cuando se declara una variable, el compilador reserva un espacio de memoria para ella y asocia el nombre de esta a la dirección de memoria desde donde comienzan los datos de esa variable. Las direcciones de memoria se suelen describir como números en hexadecimal.
Un apuntador es una variable cuyo valor es la dirección de memoria de otra variable. Se dice que un apuntador “apunta” ala variable cuyo valor se almacena a partir de la dirección de memoria que contiene el apuntador. Por ejemplo, si un apuntador p almacena la dirección de una variable x, se dice que “p apunta a x”.
La referenciación es la obtención de la dirección de una variable. En C y C++ esto se hace a través del operador ‘&’, aplicado a la variable a la cual se desea saber su dirección. Nótese que setrata de un operador unario. Ejemplo:
int x = 25;
cout << "La dirección de x es: " << &x << endl;

Este código imprime un valor del estilo “0x4fffd34”. Este valor puede variar durante cada ejecución del programa, debido a que el programa puede reservar distintos espacios de memoria durante cada ejecución.

DECLARACION DE APUNTADORES
Para declarar un apuntador seespecifica el tipo de dato al que apunta, el operador ‘*’, y el nombre del apuntador. La sintaxis es la siguiente:
<tipo de dato apuntado> *<indentificador del apuntador>
Ejemplo:
int *ptr1; // Apuntador a un dato de tipo entero (int)
char *cad1, *cad2; // Dos apuntadores a datos de tipo carácter (char)
float *ptr2; // Apuntador a un dato de tipo punto-flotante (float)

ASIGNACIÓN DEAPUNTADORES
Se pueden asignar a un apuntador direcciones de variables a través del operador de referenciación (‘&’) o direcciones almacenadas en otros apuntadores. Ejemplos:

int i = 5;
int *p, *q;
p = &i; // Se le asigna a ’p’ la dirección de ’i’
q = p; // Se le asigna a ’q’ la dirección almacenada en ’p’ (la misma de ’i’)

DESFERENCIACIÓN DE APUNTADORES
La desreferenciación es laobtención del valor almacenado en el espacio de memoria donde apunta un apuntador. En C y C++ esto se hace a través del operador ‘*’, aplicado al apuntador que contiene la dirección del valor. Nótese que se trata de un operador unario. Ejemplos:
int x = 17, y;
int *p;
p = &x;
cout << "El valor de x es: " << *p << endl; // Imprime 17
y = *p + 3; // A ’y’ se le asigna 20C++ además provee el operador binario ‘->’, utilizado para obtener campos de un registro con un apuntador al mismo de una manera más fácil y legible. Muchos compiladores de C también soportan este operador. Ejemplo:
struct Data
{
char nombre[20];
int edad;
};
Data d;
Data *pd = &d;
(*pd).edad = 23; // Acceso al campo ’edad’ utilizando el operador ’.’
pd->edad = 23; // Acceso alcampo ’edad’ utilizando el operador ’->’

VERIFICACIÓN DE TIPO DE APUNTADORES
Al igual que el resto de las variables, los apuntadores se enlazan a tipos de datos específicos (apuntadores a variables de cierto tipo), de manera que a un apuntador sólo se le pueden asignar direcciones de variables del tipo especificado en la declaración del apuntador. Ejemplo:
int *p1;
float *p2;
int x;
p1 =&x; // Esto es válido
p2 = &x; // Esto no es válido (el compilador genera un error)

APUNTADORES A APUNTADORES
Dado que un apuntador es una variable que apunta a otra, fácilmente se puede deducir que pueden existir apuntadores a apuntadores, y a su vez los segundos pueden apuntar a apuntadores, y así sucesivamente. Estos apuntadores se declaran colocando tantos asteriscos (‘*’) comosea necesario. Ejemplo:
char c = ’z’;
char *pc = &c;
char **ppc = &pc;
char ***pppc = &ppc;
***pppc = ’m’; // Cambia el valor de c a ’m’

APUNTADORES CONSTANTES Y APUNTADORES A CONSTANTES
Es posible declarar apuntadores constantes. De esta manera, no se permite la modificación de la dirección almacenada en el apuntador, pero sí se permite la modificación del valor al que apunta....
tracking img