1. MANEJO DE PUNTEROS
Muchos de nuestros sueños parecen al principio
imposibles, luego pueden parecer improbables, y
luego, cuando nos comprometemos
firmemente, se vuelven inevitables.
Christopher Reeve
4. INTRODUCCION
INFORMACION
Empleado Horas Datos de salida(se muestran
Juan, Perez 160
en el monitor)
Pedro, Rodriguez 155 Juan, Perez $320
Luis, Pozo 120 Pedro, Rodriguez $310
Luis, Pozo $240
Valor por hora = $2
Procesamiento:
Calcular salarios
Datos de entrada(ingresados x
teclado)
6. TIPOS DE DATOS
Los podemos distinguir
fácilmente, están en el diario vivir:
El Sr. Vera de 63 años tiene cedula No.
0908815533, y paga $120 de impuestos
Son tipos de datos simples
Que permiten representar información
numérica, caracteres, etc.
7. Y EN LA COMPUTADORA?
• Solo vienen integrados los tipos de datos básicos 1000
1001
• En la computadora
1002
– Cada byte es un casillero y tiene una dirección en memoria
1003
• Los datos (números y letras) se almacena en estos
casilleros
• ¿Cuantas casilleros ocupa un dato?
– Depende de su tipo y del hardware de la computadora
– Un entero puede ocupar casillas de hasta 4 bytes
– Un doble siempre ocupara mas, por su mayor precisión
• PERO, un carácter SIEMPRE ocupara casillas de 1 byte
8. DECLARACION DE VARIABLES Al declarar una variable se
le asigna espacio en
memoria y una dirección
para dicho espacio
• Una declaración de variables en C incluye
– Tipo de dato y
– Nombre de variable(identificador)
– Ejemplo: 100
4 bytes,
int a; 101
int a, b; dir: 100
102
char c; char c; 103
1 byte,
• ¿Para que se declaran variables? 104
dir: 104
– Especifica cuanta memoria debe reservarse y
– Como se van a interpretar dichos datos
f = a + b
• Es una suma de enteros, que al final se convierte a real
Las variables
Tienen direcciones de memoria
9. PUNTEROS
• Un puntero es una variable que contiene la
dirección de memoria de otra variable.
• Los punteros permiten código más compacto y
eficiente; utilizándolos en forma ordenada dan
gran flexibilidad a la programación.
• El operador unario o monádico & devuelve la
dirección de memoria de una variable.
• El operador de indirección o dereferencia *
devuelve el ``contenido de un objeto apuntado
por un apuntador''.
10. DECLARACION DE PUNTEROS
int *p;
• Un tipo de dato
– El puntero solo podrá almacenar direcciones de
memoria de variables del tipo especificado
1000
– Se pueden definir punteros de cualquier tipo:1001 3 x
1002
float *pf; 1003
char *pc; 1004
1005
1000 pt
• Un identificador que siempre va antecedido del
operador * int *pt, x; pt almacena la
x = 3; dirección de x, se dice
pt = &x; que pt apunta a x
11. Punteros
• Importante: Cuando un apuntador es declarado apunta a algún
lado. Se debe inicializar el apuntador antes de usarlo. Por lo que:
• Puede generar un error en tiempo de ejecución o presentar un
comportamiento errático.
• El uso correcto será:
• main()
{
int *ap;
int x;
ap = &x;
*ap = 100;
}
14. EJERCICIO EN CLASE
int x,y;
int *p1,*p2;
1000 -42
17
22 x
x = -42;
y = 163; 1004 163
22 y
p1 = &x;
1008 1004
1000
1004
1000
0 p1
p2 = &y;
*p1 = 17; 1012 1004
1004
0 p2
*p2 = x+5;
*p1 = *p2;
Es equivalente a escribir
x = y;
p1 = p2; Esto indica que p1
ahora apunta a la
p1 = NULL; misma variable que p2
p2 = NULL; Esto es equivalente a “encerar” el
puntero, y decir que no apunta a ninguna
variable
15. CONCLUSIONES
• Los punteros son tan solo variables que se usan
para almacenar las direcciones de otras variables.
• Declaración de los punteros.
• Char * variable;
Int * cod;
• Como todas las variables los punteros deben ser
declarados, antes de que se los utilice para
almacenar una dirección.
• Se requiere también que se especifique el tipo de
variable al que apunta