Punteros
Definición
Un puntero es un dato que contiene una dirección de memoria.
NOTA:
Existe una dirección especial que se representa por medio de la constante NULL (definida en ) y seemplea cuando queremos indicar que un puntero no apunta a ninguna dirección.
Declaración
*
Tipo de dato del objeto referenciado por el puntero
Identificador de la variable de tipo puntero.Cuando se declara un puntero se reserva memoria para albergar una dirección de memoria, pero NO PARA ALMACENAR EL DATO AL QUE APUNTA EL PUNTERO. El espacio de memoria reservado para almacenar un punteroes el mismo independientemente del tipo de dato al que apunte: el espacio que ocupa una dirección de memoria.
char c = ’a’; char *ptrc; int *ptri;
Operaciones básicas con punteros
DirecciónOperador & & devuelve la dirección de memoria donde comienza la variable . El operador & se utiliza para asignar valores a datos de tipo puntero:
int i; int *ptr; ... ptr = &i;
IndirecciónOperador * * devuelve el contenido del objeto referenciado por el puntero . El operador * se usa para acceder a los objetos a los que apunta un puntero:
char c; char *ptr; … ptr = &c; *ptr = ‘A’;
//Equivale a escribir: c = ‘A’
Asignación Operador =
A un puntero se le puede asignar una dirección de memoria concreta, la dirección de una variable o el contenido de otro puntero.
Unadirección de memoria concreta: int *ptr; ... ptr = 0x1F3CE00A; ... ptr = NULL;
La dirección de una variable del tipo al que apunta el puntero: char c; char *ptr; ... ptr = &c;
Otro puntero del mismotipo: char char char … ptr1 ptr2 c; *ptr1; *ptr2; = &c; = ptr1;
Como todas las variables, los punteros también contienen “basura” cuando se declaran, por lo que es una buena costumbreinicializarlos con NULL.
Ejemplo
int main () { int y = 5; int z = 3; int *nptr; int *mptr;
nptr = &y;
z = *nptr;
*nptr = 7;
mptr = nptr;
mptr = *z;
*mptr = *nptr;
y = (*nptr) + 1;...
Regístrate para leer el documento completo.