UNIDAD 4 Tipos de Datos Estructurados y Cadenas Tipos de datos: punteros UNIDAD 4 Variables y Direcciones Recordemos: al declarar una variable, le asociamos: nombre, tipo de datos y dirección en memoria. RAM 0 1 10 11 100 101 110 111 1000 1001 1010 1011 n=1100 1101 1110 10001 10010 10011 75 1111 10000 UNIDAD 4 Variables y Direcciones Muestra la dirección UNIDAD 4 Puntero: Concepto Variable que «apunta» a otra variable. almacena la dirección de memoria de otra variable UNIDAD 4 Puntero: Declaración tipoDato Tipo de dato que se almacena en la variable apuntada por el puntero. *nombre; Nombre de la variable de tipo puntero Punteros. Declaración UNIDAD 4 Puntero: Declaración Ejemplo: variable de tipo puntero, que apunta a otra variable de tipo entero. Le indicamos al compilador que reserve una posición de memoria para guardar la dirección de una variable (del tipo indicado) UNIDAD 4 Puntero: Operadores &: Obtiene la dirección de memoria de una variable. Operadores * : Devuelve el contenido de la variable apuntada. UNIDAD 4 Punteros Especiales VOID: Puede apuntar a cualquier tipo de dato. NULL: No apunta a ninguna variable. UNIDAD 4 Puntero: Inicialización a) Inicialización en vacío Es un error no inicializar el puntero. Se inicializa el puntero en vacío Cadena de control tipo puntero UNIDAD 4 Puntero: Inicialización b) Inicialización con la dirección de una variable Ejemplo 1 p y s, son punteros que apuntan a una variable de tipo carácter. Se pueden asignar direcciones entre punteros. A lo que apunta s, o sea a car1. Ejemplo 2 Inicialización del puntero. RAM 0 1 101 110 1010 1011 10 111 n=1100= *p 1100 P= 11 100 1000 1001 1101 1110 10010 10011 75 1111 10000 10001 UNIDAD 4 Puntero: Asignación No es posible hacer la asignación sin antes haber almacenado en el puntero una dirección de variable. Se almacena en p la dirección de car 2 A lo que apunta p, o sea car2, se le asigna ‘z’ UNIDAD 4 Puntero: Asignación UNIDAD 4 Punteros y Vectores Un nombre de array es un puntero: Contiene la dirección de la primera celda de memoria asignada al vector. Desplazamiento respecto del inicio RAM 0 1 11 v=10 100 111 101 110 1010 1011 1100 1101 1110 10000 10001 10010 10011 1111 v[0]=111=*v+0 v[1]=1000=*v+1 v[2]=1001=*v+2 UNIDAD 4 Punteros y Vectores Ejemplo 1: Ejemplo 2: UNIDAD 4 Punteros y Vectores Punteros a estructuras struct persona *ptr; //se crea un puntero a una estructura ptr = &empleado; Continuamos con ejercicios 1 a 3 del tp5