Documente Academic
Documente Profesional
Documente Cultură
ADMINISTRATIVA
PUNTEROS EN C++
PARTE II
Qu es un puntero?
Un puntero es un tipo de variable especial que
almacena una direccin de memoria.
Esta direccin es la localizacin de otro objeto
(normalmente otra variable) en memoria.
Si un puntero contiene la direccin de otra variable,
se dice que el puntero esta haciendo referencia a la
variable.
Direccin de
Variable en
memoria
1000
memoria
1003
1001
1002
1003
1004
..
.
Memoria
Punteros
Cmo declarar punteros?
Sintaxis:
Punteros
Cmo declarar punteros?
Sintaxis:
Punteros
Cmo declarar punteros?
Sintaxis:
int
char
double
float
Punteros
Cmo declarar punteros?
Sintaxis:
int
char
double
float
Punteros
Cmo declarar punteros?
Sintaxis:
int
char
double
float
Nombre de la variable
Punteros
Cmo declarar punteros?
Simbolo
indicador
Sintaxis:
int
char
double
float
Nombre de la variable
Punteros
Ejemplo:
int *pValor;
char *pNombre;
double *pSaldo;
Son variables
de tipo entero
(NO punteros).
Error comn:
int *pValorA, pValorB, pValorC;
Punteros
Cuando se trabaja con punteros es necesario utilizar
dos operadores:
A. Operador de referencia o direccin: (&)
Este operador unario tiene como finalidad
obtener la direccin de su operando
(Recordemos que los operadores unarios solo
requieren de un operando).
Sintaxis de uso:
<puntero> = &<operando>;
Punteros
A. Operador de indireccin: (*)
Este es el complemento del operador &, este
operador nos permite realizar dos tipos de
operaciones con la informacin a la que esta
haciendo referencia el puntero.
Punteros
1. Declarar un puntero e inicializarlo
1
2
3
Punteros
1. Declarar un puntero e inicializarlo
1
2
3
Punteros
1. Declarar un puntero e inicializarlo
1
2
3
Direccin de
memoria
1
20
Punteros
1. Declarar un puntero e inicializarlo
1
2
3
Direccin de
memoria
1
20
Punteros
1. Declarar un puntero e inicializarlo
1
2
3
Direccin de
memoria
1
Valor
1000
pValor
1001
20
NULL
Punteros
1. Declarar un puntero e inicializarlo
1
2
3
Direccin de
memoria
1
Valor
1000
pValor
1001
20
NULL
Punteros
1. Declarar un puntero e inicializarlo
1
2
3
Direccin de
memoria
1
Valor
1000
pValor
1001
20
NULL
1000
Punteros
1. Declarar un puntero e inicializarlo
1
2
3
Direccin de
memoria
1
Valor
1000
pValor
1001
20
NULL
1000
Referencia a
Valor
Punteros
2. Modificar los datos de la memoria utilizando la
referencia del puntero.
1
2
3
4
Direccin de
memoria
Valor
1000
pValor
1001
20
1000
Punteros
2. Modificar los datos de la memoria utilizando la
referencia del puntero.
1
2
3
4
Direccin de
memoria
4
Valor
1000
pValor
1001
20
1000
Punteros
2. Modificar los datos de la memoria utilizando la
referencia del puntero.
1
2
3
4
Direccin de
memoria
4
Valor
1000
pValor
1001
20
1000
Punteros
2. Modificar los datos de la memoria utilizando la
referencia del puntero.
1
2
3
4
Direccin de
memoria
4
Valor
1000
pValor
1001
50
20
1000
Punteros
2. Modificar los datos de la memoria utilizando la
referencia del puntero.
1
2
3
4
Direccin de
memoria
4
Valor
1000
pValor
1001
50
20
1000
Punteros
2. Modificar los datos de la memoria utilizando la
referencia del puntero.
1
2
3
4
Direccin de
memoria
4
Valor
1000
pValor
1001
50
20
1000
Punteros
2. Leer los datos de la memoria utilizando la
referencia del puntero.
1 int ValorA, ValorB = 20, ValorC;
2 int *pValor = NULL;
3 pValor = &ValorB;
4 ValorA = *pValor;
// Leer de Forma Indirecta
5 ValorC = ValorA + *pValor + 10;
No
1
2
3
4
5
ValorA
ValorB
ValorC
pValor
1001
1002
1003
1004
Punteros
2. Leer los datos de la memoria utilizando la
referencia del puntero.
1 int ValorA, ValorB = 20, ValorC;
2 int *pValor = NULL;
3 pValor = &ValorB;
4 ValorA = *pValor;
// Leer de Forma Indirecta
5 ValorC = ValorA + *pValor + 10;
ValorA
ValorB
ValorC
pValor
No
1001
1002
1003
1004
20
2
3
4
5
Punteros
2. Leer los datos de la memoria utilizando la
referencia del puntero.
1 int ValorA, ValorB = 20, ValorC;
2 int *pValor = NULL;
3 pValor = &ValorB;
4 ValorA = *pValor;
// Leer de Forma Indirecta
5 ValorC = ValorA + *pValor + 10;
ValorA
ValorB
ValorC
pValor
No
1001
1002
1003
1004
20
2
3
4
5
NULL
Punteros
2. Leer los datos de la memoria utilizando la
referencia del puntero.
1 int ValorA, ValorB = 20, ValorC;
2 int *pValor = NULL;
3 pValor = &ValorB;
4 ValorA = *pValor;
// Leer de Forma Indirecta
5 ValorC = ValorA + *pValor + 10;
ValorA
ValorB
ValorC
pValor
No
1001
1002
1003
1004
20
2
3
4
5
NULL
1002
Punteros
2. Leer los datos de la memoria utilizando la
referencia del puntero.
1 int ValorA, ValorB = 20, ValorC;
2 int *pValor = NULL;
3 pValor = &ValorB;
4 ValorA = *pValor;
// Leer de Forma Indirecta
5 ValorC = ValorA + *pValor + 10;
ValorA
ValorB
ValorC
pValor
No
1001
1002
1003
1004
20
?
NULL
1002
2
3
4
5
20
Punteros
2. Leer los datos de la memoria utilizando la
referencia del puntero.
1 int ValorA, ValorB = 20, ValorC;
2 int *pValor = NULL;
3 pValor = &ValorB;
4 ValorA = *pValor;
// Leer de Forma Indirecta
5 ValorC = ValorA + *pValor + 10;
ValorA
ValorB
ValorC
pValor
No
1001
1002
1003
1004
20
?
NULL
1002
2
3
4
5
20
50
Punteros
Ejercicio:
1
2
3
4
5
ValorA
ValorB
ValorC
pValor
1001
1002
1003
1004
Punteros
Ejercicio:
1
2
3
4
5
ValorB
ValorC
pValor
No
1001
1002
1003
1004
10
30
2
3
4
5
Punteros
Ejercicio:
1
2
3
4
5
ValorB
ValorC
pValor
No
1001
1002
1003
1004
10
30
2
3
4
5
NULL
Punteros
Ejercicio:
1
2
3
4
5
ValorB
ValorC
pValor
No
1001
1002
1003
1004
10
30
2
3
4
5
NULL
1001
Punteros
Ejercicio:
1
2
3
4
5
ValorB
ValorC
pValor
No
1001
1002
1003
1004
10
30
?
NULL
1001
2
3
4
5
20
Punteros
Ejercicio:
1
2
3
4
5
ValorB
ValorC
pValor
No
1001
1002
1003
1004
10
30
?
NULL
1001
2
3
4
5
20
55