Vous êtes sur la page 1sur 23

PUNTEROS O

APUNTADORES

Apuntador
Es una variable que contiene una direccin de memoria, la
cual corresponder a un dato o a una variable que contiene
el dato.
Cada variable que se utiliza en una aplicacin ocupa una o
varias posiciones de memoria. Estas posiciones de memoria
se acezan por medio de una direccin.

Operador de direccin y de
indireccin
El Operador de Direccin ( &) regresa la direccin de una
variable.
El Operador de Indireccin ( * ), toma la direccin de una
variable y regresa el dato que contiene esa direccin.

Inicializacin de un apuntador
Inicializacin esttica
int *ptr = &x;
Inicializacin dinmica
funciones de asignacin de memoria
malloc(), calloc(), realloc() y free().

Variable
Referencia
(Puntero): Es una variable
esttica, es decir se crea
en tiempo de compilacin.
Variable
Referenciada
(Annima):
Es
una
variable dinmica creada
en tiempo de ejecucin,
que
nicamente puede ser
accedida a travs de un
puntero.

Declaracin de un apuntador
Tipo_dato *nombre de apuntador;

oTipo_dato : Especifica el tipo de objeto apuntado y


puede ser cualquier tipo (int, float, char, etc).

oNombre de apuntador: Es el identificador (nombre


asignado) del apuntador.

<tipo_de_dato_apuntado> *
<identificador_apuntador> = & <variable_a_apuntar>;
donde:
<tipo_de_dato_apuntado>: Es el tipo de dato al cual va a
apuntar el apuntador;
*: Es el elemento que dice que la variable va a ser un
apuntador;
Nota: En una declaracin define la variable como apuntador
<identificador_apuntador>: Es el nombre del apuntador;
&: Es el elemento para obtener la direccin de la variable
apuntada;
<variable_a_apuntar>: Identificador de la variable a

Al declarar un puntero hay que


asegurarse de que su tipo base sea
compatible con el tipo
de objeto al que se quiera que
apunte. Aunque no es una imposicin
de C, nosotros siempre
declararemos el tipo de datos puntero
inmediatamente despus del tipo de
datos al que apunta.

Aritmtica de
Apuntadores

Apuntadores y vectores
Las versiones con apuntadores en los arreglos son ms
rpidas que la forma comn.
int a[10]; int *pa;
pa=&a[0]
*pa=a[0]
*(pa+1)=a[1]
a[n] = a *(a+n).

Apuntadores y Matrices
int a[10][10];
int *b[10];
a[5][5] y b[5][5]

Apuntadores y cadenas
char * mensaje[4] = {''Hola'',''Adios'',''Bye'',''Saludos''} ;

NULL (\0).

Apuntadores a otros apuntadores


void main( )
{
char ch;

/* Un caracter */

char *pch; /* Un apuntador a caracter */


char **ppch; /* Un apuntador a un apuntador a caracter
*/
ch = 'A';
pch = &ch;
ppch = &pch;
printf("%c\n", **ppch); /* muestra el valor de ch */
}

Asignacin Dinmica de Memoria


Permite obtener la memoria para variables que se precisen
en la ejecucin del
programa.
void *malloc (tamao)

Asignacin de memoria a valores


numricos
tamao = (nmero de elementos) * (tamao del tipo)
Ejemplos:
int *apun;
apun = (int *) malloc (sizeof(int));
float *apun;
apun = (float *) malloc (sizeof(float));

Declaracin de variables puntero


typedef <tipo> *<ident>;
Donde tipo es el tipo base del puntero, que
puede ser cualquier tipo vlido e ident es el
nombre del tipo de datos.

EJEMPLO

typedef int *PuntAInt;// Tipo puntero a enteros (int)


typedef char *PuntACar;// Tipo puntero a caracteres (char)
Tras definir los tipos de datos, es posible definir una variable
de estos tipos del modo siguiente:
PunAInt contador; //contador es una variable de tipo
PuntAInt
PuntACar carcter; // carcter es una variable de tipo
PuntACar
La variable contador no contendr un valor entero (tipo
int), sino la direccin de memoria
donde est almacenado un valor de tipo int.
El valor
almacenado en la variable annima de tipo
int apuntada por contador ser accesible a travs de este

Los apuntadores en C se rigen por la siguientes


reglas bsicas:
1. Un apuntador es una variable como cualquier
otra;
2. Una variable apuntador contiene una direccin
que apunta a otra posicin de memoria;
3. En esa posicin de memoria se almacenan los
datos a los que apunta el apuntador;
4. Un apuntador apunta a una variable que se
encuentra almacenada en alguna parte de la
memoria fsica.

Apuntador NULL
Es aquel que no apunta a ninguna localidad de memoria o
dato valido, este es muy til cuando se requiere indicar al
programa que valide cuando el apuntador no esta
apuntando a nada (dato no valido).
Es decir, es muy til para propsitos de comparacin en una
estructura condicional o en una iterativa,

Apuntador void
Son apuntadores que apuntan a cualquier tipo de dato, es decir, no
se inicializa con un tipo de dato especifico, tambin son llamados
puntadores genricos.
void *ptr;
Un apuntador void permite a una funcin especificar un parmetro
de entrada para recibir cualquier tipo de apuntador sin que se
produzca un error de tipos.

REFERENCIAS
Departamento de Lenguajes y Ciencias de la Computacin,
2005-2006. [En lnea]. Available:
http://es.scribd.com/doc/94274637/tema2. [ltimo acceso: 08
11 2012]
http://computacion.cs.cinvestav.mx/~efranco
El presente artculo fue realizado con la ayuda del libro
Programacin en C++, del autor Luis Joyanes
Aguilar, editorial Mc Graw Hill
Programacin Digital I, Gilberto Diaz, Facultad de Ingeniera

Vous aimerez peut-être aussi