Sunteți pe pagina 1din 37

LICENCIATURA EN INFORMTICA

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:

<tipo de dato> *<identificador>;

Punteros
Cmo declarar punteros?
Sintaxis:

<tipo de dato> *<identificador>;

Punteros
Cmo declarar punteros?
Sintaxis:

<tipo de dato> *<identificador>;

int
char
double
float

Punteros
Cmo declarar punteros?
Sintaxis:

<tipo de dato> *<identificador>;

int
char
double
float

Punteros
Cmo declarar punteros?
Sintaxis:

<tipo de dato> *<identificador>;

int
char
double
float

Nombre de la variable

Punteros
Cmo declarar punteros?
Simbolo
indicador
Sintaxis:

<tipo de dato> *<identificador>;

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;

Puntero de tipo entero

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.

Modificar los datos que estn en la


direccin de memoria a la que est
haciendo referencia el puntero.

Leer los datos que estn en la direccin


de memoria a la que esta haciendo
referencia el puntero.

Punteros
1. Declarar un puntero e inicializarlo
1
2
3

int Valor = 20;


int *pValor = NULL;
pValor = &Valor; // Obtenemos la direccin de memoria

Punteros
1. Declarar un puntero e inicializarlo
1
2
3

int Valor = 20;


int *pValor = NULL;
pValor = &Valor; // Obtenemos la direccin de memoria

Punteros
1. Declarar un puntero e inicializarlo
1
2
3

int Valor = 20;


int *pValor = NULL;
pValor = &Valor; // Obtenemos la direccin de memoria
Valor
1000

Direccin de
memoria
1

20

Punteros
1. Declarar un puntero e inicializarlo
1
2
3

int Valor = 20;


int *pValor = NULL;
pValor = &Valor; // Obtenemos la direccin de memoria
Valor
1000

Direccin de
memoria
1

20

Punteros
1. Declarar un puntero e inicializarlo
1
2
3

int Valor = 20;


int *pValor = NULL;
pValor = &Valor; // Obtenemos la direccin de memoria

Direccin de
memoria
1

Valor
1000

pValor
1001

20

NULL

Punteros
1. Declarar un puntero e inicializarlo
1
2
3

int Valor = 20;


int *pValor = NULL;
pValor = &Valor; // Obtenemos la direccin de memoria

Direccin de
memoria
1

Valor
1000

pValor
1001

20

NULL

Punteros
1. Declarar un puntero e inicializarlo
1
2
3

int Valor = 20;


int *pValor = NULL;
pValor = &Valor; // Obtenemos la direccin de memoria

Direccin de
memoria
1

Valor
1000

pValor
1001

20

NULL
1000

Punteros
1. Declarar un puntero e inicializarlo
1
2
3

int Valor = 20;


int *pValor = NULL;
pValor = &Valor; // Obtenemos la direccin de memoria

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

int Valor = 20;


int *pValor = NULL;
pValor = &Valor;
*pValor = 50; // Modificando de Forma Indirecta

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

int Valor = 20;


int *pValor = NULL;
pValor = &Valor;
*pValor = 50; // Modificando de Forma Indirecta

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

int Valor = 20;


int *pValor = NULL;
pValor = &Valor;
*pValor = 50; // Modificando de Forma Indirecta

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

int Valor = 20;


int *pValor = NULL;
pValor = &Valor;
*pValor = 50; // Modificando de Forma Indirecta

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

int Valor = 20;


int *pValor = NULL;
pValor = &Valor;
*pValor = 50; // Modificando de Forma Indirecta

Direccin de
memoria
4

Valor
1000

pValor
1001

50
20

1000

Estamos modificando el dato almacenado en la variable


Valor de forma indirecta.

Punteros
2. Modificar los datos de la memoria utilizando la
referencia del puntero.
1
2
3
4

int Valor = 20;


int *pValor = NULL;
pValor = &Valor;
*pValor = 50; // Modificando de Forma Indirecta

Direccin de
memoria
4

Valor
1000

pValor
1001

50
20

1000

Estamos modificando el dato almacenado en la variable


Valor de forma indirecta.
5 Valor = 70;
// Forma directa

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

int ValorA = 10, ValorB = 30, ValorC;


int *pValor = NULL;
pValor = &ValorA;
ValorB = *pValor + *pValor;
ValorC = ValorB + 5 + *pValor + 20;
No
1
2
3
4
5

ValorA

ValorB

ValorC

pValor

1001

1002

1003

1004

Punteros
Ejercicio:
1
2
3
4
5

int ValorA = 10, ValorB = 30, ValorC;


int *pValor = NULL;
pValor = &ValorA;
ValorB = *pValor + *pValor;
ValorC = ValorB + 5 + *pValor + 20;
ValorA

ValorB

ValorC

pValor

No

1001

1002

1003

1004

10

30

2
3
4
5

Punteros
Ejercicio:
1
2
3
4
5

int ValorA = 10, ValorB = 30, ValorC;


int *pValor = NULL;
pValor = &ValorA;
ValorB = *pValor + *pValor;
ValorC = ValorB + 5 + *pValor + 20;
ValorA

ValorB

ValorC

pValor

No

1001

1002

1003

1004

10

30

2
3
4
5

NULL

Punteros
Ejercicio:
1
2
3
4
5

int ValorA = 10, ValorB = 30, ValorC;


int *pValor = NULL;
pValor = &ValorA;
ValorB = *pValor + *pValor;
ValorC = ValorB + 5 + *pValor + 20;
ValorA

ValorB

ValorC

pValor

No

1001

1002

1003

1004

10

30

2
3
4
5

NULL
1001

Punteros
Ejercicio:
1
2
3
4
5

int ValorA = 10, ValorB = 30, ValorC;


int *pValor = NULL;
pValor = &ValorA;
ValorB = *pValor + *pValor;
ValorC = ValorB + 5 + *pValor + 20;
ValorA

ValorB

ValorC

pValor

No

1001

1002

1003

1004

10

30

?
NULL
1001

2
3
4
5

20

Punteros
Ejercicio:
1
2
3
4
5

int ValorA = 10, ValorB = 30, ValorC;


int *pValor = NULL;
pValor = &ValorA;
ValorB = *pValor + *pValor;
ValorC = ValorB + 5 + *pValor + 20;
ValorA

ValorB

ValorC

pValor

No

1001

1002

1003

1004

10

30

?
NULL
1001

2
3
4
5

20
55

S-ar putea să vă placă și