Académique Documents
Professionnel Documents
Culture Documents
OBJETIVOS
Manejo correcto y apropiado de punteros y reserva de memoria dinmica Reconocer el tipo de dato void y void * en C como una herramienta de potencial importancia
DATO
Informacin en bruto, sin ningn significado Dado un enunciado, evento o accin, los datos
Permiten representar sus actores o participantes Analizndolos, se podr obtener resultados deseados
INFORMACIN
Es el resultado deseado luego de procesar los datos Los datos, al ser procesados, se convierten en informacin til o resultados.
Horas 160
Pedro, Rodriguez
Luis, Pozo Valor por hora = $2
155
120
$320
$310 $240
Para representar nmeros, usamos el sistema decimal Para representar palabras, usamos el abecedario
La computadora:
Un 1 o un 0 -> bit
TIPOS DE DATOS
Los datos se clasifican en TIPOS Son los diferentes dominios existentes. Ejemplo:
RECORDAR
Al que puede pertenecer una constante Que puede asumir una variable o expresin Que puede ser generado por una funcin Se puede deducir su tipo de dato Ya sea de su forma o de su declaracin Sin necesidad que se ejecute ningn proceso Necesitan participantes (argumentos) de determinado tipo Producen resultados de otro o el mismo tipo
El Sr. Vera de 63 aos tiene cedula No. 13765571, y paga $120 de impuestos
Y EN LA COMPUTADORA?
1000 1001 1002 Cada byte es un casillero y tiene una direccin en memoria 1003 Los datos (nmeros y letras) se almacena en estos
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 precisin
ALMACENANDO DATOS
TIPO DE DATO #bytes Representacin interna En ANSI C
ENTEROS
2 4 8 8 16 1
Positivos: conjunto de bits 38 -> 00100110 Negativos:Complemento a Dos -38 -> 11011001 Mantisa x base(exponente) 387.53 -> 38753 x 10-2 00000000100101110110000111111110 ASCII 11000000 -> A
int long
REALES
CARACTERES
int a; char c;
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
DIRECCIONES DE MEMORIA
Las variables
Ejemplo:
&a es 1000
Un puntero
DECLARACION DE PUNTEROS
int *p;
Un tipo de dato
El puntero solo podr almacenar direcciones de memoria de variables del tipo especificado Se pueden definir punteros de cualquier tipo:
float *pf; char *pc;
1000 1001 1002 1003 1004 1005
1000 pt
CONSULTANDO CONTENIDO
A travs del puntero se puede llegar a conocer todo sobre la variable Ejemplo:
char c, *pc1, *pc2; pc1 = &c;
Si quiero conocer el contenido al que apunta un puntero, uso el Es equivalente a : operador *, sobre dicho puntero printf(%c, c);
c = A printf(%c, *pc1); *pc1 = N printf(%c,c);
Es equivalente a : c = N Imprime N pues c ya cambio
Ejercicio
EJERCICIO EN CLASE
int x,y; int *p1,*p2; x = -42; y = 163; p1 = &x; p2 = &y; *p1 = 17; *p2 = x+5; *p1 = *p2; p1 = p2; p1 = NULL; p2 = NULL;
Es equivalente a escribir x = y; Esto indica que p1 ahora apunta a la misma variable que p2
1000
1004 1008 1012
y p1
p2
PASO DE PARAMETROS
Recibe una copia Similar a cuando va al hacer algn tramite y le piden al cdula
No entrega la cdula verdadera Entrega una copia La verdadera estar segura, aunque quemen y destruyan la copia
x = 5; printf(%d\n,x); funct(x); printf(%d\n,x);
Se imprime 5, el valor de x no cambia aunque la funcin haya intentado modificarla
Ejemplo:
No hay copias Si algo se le hace al parmetro, se le esta haciendo a la variable Para esto, se usan punteros La funcin trabaja con un puntero a la variable enviada
Ejemplo:
Ejercicio
Fin clase 1