Title: Punteros
1Punteros
21
3Porque se pasan parámetros por valor!! Solución
pasar parámetros por referencia! gt usar
punteros !!
1
4Definición y operador
- Puntero es una variable cuyo contenido es la
dirección de una variable. (apunta a una
variable) - Ejemplo sea p una variable de tipo puntero y c
una variable de cualquier tipo
p c
El operador unario entrega la dirección del
objeto que le sucede.
5Operador
- El operador unario , permite el acceso al
contenido de la dirección apuntada por la
variable puntero que le sucede. - Ofrece un nombre alternativo para la variable
apuntada. - Sean c y f dos variables enteras, sea p una
variable puntero que apunta a c.
f
c
p
2
3
p 2
f p 1
Es lo mismo que c 2
f c 1
6Ejemplo
int x 1, y 2 int ip / ip es puntero a
entero / ip x / ip apunta al entero x /
y ip / y es ahora 1 / ip 0
/ x es ahora 0 /
7Ejemplo (cont.)
int x 1, y 2 int ip / ip es puntero a
entero / ip x / ip apunta al entero x /
y ip / y es ahora 1 / ip 0
/ x es ahora 0 /
y
x
.......
......
1
2
1
8Ejemplo (cont.)
int x 1, y 2 int ip / ip es puntero a
entero / ip x / ip apunta al entero x /
y ip / y es ahora 1 / ip 0
/ x es ahora 0 /
ip
y
x
.......
......
1
2
?
1
9Ejemplo (cont.)
int x 1, y 2 int ip / ip es puntero a
entero / ip x / ip apunta al entero x /
y ip / y es ahora 1 / ip 0
/ x es ahora 0 /
ip
y
x
.......
......
1
2
1
10Ejemplo (cont.)
int x 1, y 2 int ip / ip es puntero a
entero / ip x / ip apunta al entero x /
y ip / y es ahora 1 / ip 0
/ x es ahora 0 /
El operador unario es el operador de
indirección.
ip
y
x
.......
......
1
1
11Ejemplo (fin)
int x 1, y 2 int ip / ip es puntero a
entero / ip x / ip apunta al entero x /
y ip / y es ahora 1 / ip 0
/ x es ahora 0 /
El operador unario es el operador de
indirección.
ip
y
x
.......
......
0
1
1
12- El contenido de un puntero puede ser modificado
realizando operaciones aritméticas enteras
simples. - float p / un float tiene 4 bytes /
- p p 2 / p apunta ahora a una variable 24
bytes de distancia del la anterior /
p
.......
......
1 byte
1 float
13Aritmética de punteros (ejemplo)
int x 0, y 1, z 2/ globales / int
ip / ip es puntero a entero / ip x
/ ip apunta al entero x / ip ip 1 /
x es ahora 1 / ip ip 1 / ip
apunta ahora a y / ip ip 1 / y es ahora
2 / ip ip 1 / ip apunta ahora a
z / ip ip 1 / z es ahora 3 /
14Aritmética de punteros (cont.)
int x 0, y 1, z 2/ globales / int
ip / ip es puntero a entero / ip x
/ ip apunta al entero x / ip ip 1 /
x es ahora 1 / ip ip 1 / ip
apunta ahora a y / ip ip 1 / y es ahora
2 / ip ip 1 / ip apunta ahora a
z / ip ip 1 / z es ahora 3 /
x
y
z
.......
......
0
2
1
15Aritmética de punteros (cont.)
int x 0, y 1, z 2/ globales / int
ip / ip es puntero a entero / ip x
/ ip apunta al entero x / ip ip 1 /
x es ahora 1 / ip ip 1 / ip
apunta ahora a y / ip ip 1 / y es ahora
2 / ip ip 1 / ip apunta ahora a
z / ip ip 1 / z es ahora 3 /
ip
x
y
z
.......
......
?
0
2
1
16Aritmética de punteros (cont.)
int x 0, y 1, z 2/ globales / int
ip / ip es puntero a entero / ip x
/ ip apunta al entero x / ip ip 1 /
x es ahora 1 / ip ip 1 / ip
apunta ahora a y / ip ip 1 / y es ahora
2 / ip ip 1 / ip apunta ahora a
z / ip ip 1 / z es ahora 3 /
ip
x
y
z
.......
......
0
2
1
17Aritmética de punteros (cont.)
int x 0, y 1, z 2/ globales / int
ip / ip es puntero a entero / ip x
/ ip apunta al entero x / ip ip 1 /
x es ahora 1 / ip ip 1 / ip
apunta ahora a y / ip ip 1 / y es ahora
2 / ip ip 1 / ip apunta ahora a
z / ip ip 1 / z es ahora 3 /
ip
x
y
z
.......
......
1
2
1
18Aritmética de punteros (cont.)
Int x 0, y 1, z 2/ globales / int
ip / ip es puntero a entero / ip x
/ ip apunta al entero x / ip ip 1 /
x es ahora 1 / ip ip 1 / ip
apunta ahora a y / ip ip 1 / y es ahora
2 / ip ip 1 / ip apunta ahora a
z / ip ip 1 / z es ahora 3 /
ip
x
y
z
.......
......
0
2
1
19Aritmética de punteros (cont.)
int x 0, y 1, z 2/ globales / int
ip / ip es puntero a entero / ip x
/ ip apunta al entero x / ip ip 1 /
x es ahora 1 / ip ip 1 / ip
apunta ahora a y / ip ip 1 / y es ahora
2 / ip ip 1 / ip apunta ahora a
z / ip ip 1 / z es ahora 3 /
ip
x
y
z
.......
......
0
2
2
20Aritmética de punteros (cont.)
int x 0, y 1, z 2/ globales / int
ip / ip es puntero a entero / ip x
/ ip apunta al entero x / ip ip 1 /
x es ahora 1 / ip ip 1 / ip
apunta ahora a y / ip ip 1 / y es ahora
2 / ip ip 1 / ip apunta ahora a
z / ip ip 1 / z es ahora 3 /
ip
x
y
z
.......
......
0
2
2
21Aritmética de punteros (fin)
int x 0, y 1, z 2/ globales / int
ip / ip es puntero a entero / ip x
/ ip apunta al entero x / ip ip 1 /
x es ahora 1 / ip ip 1 / ip
apunta ahora a y / ip ip 1 / y es ahora
2 / ip ip 1 / ip apunta ahora a
z / ip ip 1 / z es ahora 3 /
ip
x
y
z
.......
......
0
3
2
22Otra imagen de punteros
ip
x
y
z
.......
......
0
3
2
23Otra imágen de punteros
ip
x
y
z
........................
0
3
2
241