Está en la página 1de 4

UNMSM – Ingeniería Industrial

ALGORITMOS Y ESTRUCTURA DE DATOS

PUNTEROS
La memoria principal de una computadora es como una colección
de pequeñas celdas que almacenan datos e instrucciones. Cada
celda se identifica por un número que representa su dirección de
memoria.
Un puntero es una variable cuyo valor es la dirección de
memoria de otra variable.

Memoria

200
p 800
800
x 23

p es un puntero.
x es una variable tipo int apuntada por p.

Declaración de punteros

tipo de dato apuntado * puntero ;

Ejemplos:

int *p; // p es un puntero que apunta a una variable tipo int.


float *q; // q es un puntero que apunta a una variable tipo float.
char *r; // r es un puntero que apunta a una variable tipo char.
Mag. Hilmar Hinojosa Lazo 1
UNMSM – Ingeniería Industrial
ALGORITMOS Y ESTRUCTURA DE DATOS

Para hacer referencia a la variable apuntada se usa la notación:

* puntero

Ejemplo:

Memoria

200
p 800
800
x 23
*p

*p es otro nombre para la variable x.

Constante NULL

Es una constante predefinida en C++ cuyo valor es cero ( 0 ) y


sirve para inicializar un puntero que no apunta a ninguna variable.

puntero = NULL;

Ejemplo;
int *p;
p = NULL;

Mag. Hilmar Hinojosa Lazo 2


UNMSM – Ingeniería Industrial
ALGORITMOS Y ESTRUCTURA DE DATOS

Operador &

Permite obtener la dirección de memoria de una variable. Su


sintaxis es:

& nombre de variable

Ejemplo: int main( )


{
int x;
int *p;
p = &x;
}

Manejo de cadenas usando punteros

El nombre de una cadena equivale a la dirección donde empieza la


cadena en memoria.

Ejemplo: char color[8] = “rojo”;

312 313 314 315 316 317 318 319

color ‘r’ ‘o’ ‘j’ ‘o’ ‘\0’


0 1 2 3 4 5 6 7

El nombre de la cadena color equivale a la dirección 312.

Como los elementos de una cadena son de tipo char, puede ser
procesada usando punteros a char.
Mag. Hilmar Hinojosa Lazo 3
UNMSM – Ingeniería Industrial
ALGORITMOS Y PROGRAMACION
Ejemplo:

char color[ 8 ] = “rojo”;


char *p;
p = color; // p = &color[ 0 ];

p apunta al comienzo de la cadena, por lo tanto *p es el primer


carácter de la cadena ( ‘r’ ).

p 312

*p
312 313 314 315 316 317 318 319

color ‘r’ ‘o’ ‘j’ ‘o’ ‘\0’


0 1 2 3 4 5 6 7

Si se incrementa el valor del puntero p en una unidad, *p será el


segundo carácter de la cadena ( ‘o’ ).

p 313

*p
312 313 314 315 316 317 318 319
color ‘r’ ‘o’ ‘j’ ‘o’ ‘\0’
0 1 2 3 4 5 6 7

Mag. Hilmar Hinojosa Lazo 4

También podría gustarte