Está en la página 1de 15

PUNTEROS

VARIABLE PUNTERO
Almacena una direccin (posicin interna en memoria RAM) de memoria de otra variable, es decir:
Direccin de memoria EF00 EF02 FEE0 EF00 Variable puntero (direccin) Variable de memoria 20 Variable (valor)

DECLARACION DE LA VARIABLE PUNTERO


tipo * nombre; Donde:
tipo, es cualquier tipo(de dato) vlido en C++ nombre, es el nombre de la variable puntero.

La direccin nula es el macro NULL, se encuentra definida en el archivo de cabecera stdio.h, corresponde al valor 0000.

OPERADORES DE PUNTEROS
Direccin (&) y Indireccin (*) Operador Direccin (&) Este operador devuelve la direccin de memoria de su operando que debe ser una variable. Ej.: int *m, cuenta=20; m= &cuenta; //asignacin m recibe la direccin de la variable cuenta //Si cuenta est en EF00 (que guarda 20), m tendr .

OPERADORES DE PUNTEROS

Direccin de memoria

Memoria

Variable

EF00 EF02

20 .

cuenta

FEE0

EF00

OPERADORES DE PUNTEROS
Operador Indireccin (*) devuelve el valor de la variable localizada en la direccin del operando que debe un puntero. Ej.: int *m, q, cuenta=20; //asignacin m= &cuenta; q= *m; q recibe el valor (contenido) de la variable m . q=cuenta; //Si cuenta est en EF00 (que guarda 20), q EF02 , entonces q tendr

OPERADORES DE PUNTEROS

Direccin de memoria

Memoria

Variable

EF00 EF02 FEE0

20 20 . EF00

cuenta q m

OPERADORES DE PUNTEROS
Mediante un puntero entero asignar el valor de la variable de tipo flotante x a la variable de tipo flotante y.

OPERACIONES CON PUNTEROS


ASIGNACIN DE PUNTEROS Se puede asignar una direccin o un puntero a una variable puntero(solamente). Ej.: Imprimir la direccin y el valor de X, mediante punteros.
int x=100; int *p1,*p2; p1= &x; //asignacin p2=&p1; //asignacin de puntero printf (La direccin de X= %p, Puntero p2= %p\n, &x,p2); printf (El contenido del puntero p2= %d \n,*p2);

INICIALIZACIN DE PUNTEROS
Se debe inicializar el puntero a un valor conocido antes de usarlo. Por defecto (NULL), indica que no apunta a ninguna direccin de memoria especfica. Esto se utiliza normalmente en asignacin dinmica de memoria. Ej.: inicializacin de una cadena: char *p = Hola que tal; // almacena cadena puts(p); putchar(*p);

INDIRECCIN MLTIPLE (PUNTERO A PUNTERO)

Dos tipos de indireccin: Indireccin Simple: El valor de un puntero es la direccin de la variable que contiene el valor deseado.
Puntero DIRECCIN Variable

INDIRECCIN MLTIPLE (PUNTERO A PUNTERO)

Indireccin Mltiple: En puntero a puntero, el primer puntero contiene la direccin del segundo puntero, que apunta a su vez a la variable que contiene el valor deseado.
Puntero DIRECCIN Puntero DIRECCIN Variable

INDIRECCIN MLTIPLE (PUNTERO A PUNTERO)

Declaracin de una variable puntero a puntero. Se aade ** al nombre de la variable. Ej.: float ** ptr; Donde ptr, es un puntero a puntero de tipo float. Para acceder al valor deseado indirectamente apuntado por un puntero a puntero, hay que poner dos veces el operador *.

INDIRECCIN MLTIPLE (PUNTERO A PUNTERO)

Imprimir el valor de la variable x, utilizando indireccin mltiple. int x=100; int *p, **q; p=&x; q=&p; printf ("\n x= %d \n",**q);

INDIRECCIN MLTIPLE (PUNTERO A PUNTERO)


Grficamente:
Direccin de memoria Memoria Variable

EF00 FEE0 FEE2

100 . EF00 FEE0


Direccin de la Variable

x p q
Valor de la variable

Direccin de Puntero

FEE0 q q ==FEE0 p == *q == EF00 x== *p == **q == 100

EF00 *q p **q *p x

También podría gustarte