Mind map
Apuntadores
Map content
Apuntadores
Apuntadores como argumentos de funciones
- Cuando se pasa una variable a una función (paso por valor) no se puede cambiar el valor de esa variable. Sin embargo, si se pasa un apuntador a una variable a una función (paso por dirección) se puede cambiar el valor de la variable.
Apuntadores a estructuras
- La declaración es similar a la de una variable estructura, pero anteponiendo * a la variable: struct identificador *variable. struct persona { char nombre[30]; int edad; int altura; int peso; }; struct persona empleado = {"Amigo, Pepe", 47, 182, 85}; struct persona *p; /* se crea un puntero de estructura */ p = &empleado;
Apuntadores NULL y void
- Existen dos tipos de apuntadores especiales muy utilizados en el tratamiento de sus programas: los apuntadores void y NULL (nulo).
- Un apuntador nulo no apunta a ninguna parte, es decir, un apuntador nulo no direcciona ningún dato válido en memoria. Este apuntador se utiliza para proporcionar a un programa un medio de conocer cuando una variable apuntadorno direcciona a un dato valido. Para declarar un apuntador nulo se utiliza la macro NULL, definida en los archivos de cabecera stdef.h, stdio.h, stdlib.h y string.h. Se debe incluir uno o más de estos archivos de cabecera antes de que se pueda utilizar la macro NULL. Se puede definir NULL en la parte superior de su programa (o en un archivo de cabecera personal) con la línea: #define NULL 0 Un sistema de inicializar una variable apuntador a nulo es: char *p = NULL;
- Existen dos tipos de apuntadores especiales muy utilizados en el tratamiento de sus programas: los apuntadores void y NULL (nulo).
Asignación dinámica de la memoria
- El espacio de la variable asignada dinámicamente se crea durante la ejecución del programa, al contrario que en el caso de una variable local cuyo espacio se asigna en tiempo de compilación. La asigna ción dinámica de la memoria proporciona control directo sobre los requisitos de memoria de su programa. Se puede determinar la cantidad de memoria necesaria en el momento en que se haga la asignación. Dependiendo del modelo de memoria en uso, no se pueden crear variables mayores de 64 K.
Concepto
- Un apuntador es
- una dirección de memoria. La variable p se denomina apuntador debido a que su valor “apunta” a la posición de otro valor.
- La declaración de un apuntador
- debe indicar al compilador el tipo de dato al que apunta el apuntador, para ello se utiliza asterisco antes (*), mediante el siguiente formato: <tipo de dato apuntado> *<identificador de puntero>
- Ejemplos: int *ptr1; /* Puntero a un tipo de dato entero (int) */ long *ptr2; /* Puntero a un tipo de dato entero largo (long int) */
- debe indicar al compilador el tipo de dato al que apunta el apuntador, para ello se utiliza asterisco antes (*), mediante el siguiente formato: <tipo de dato apuntado> *<identificador de puntero>
- La inicialización
- proporciona a ese apuntador la dirección del dato correspondiente. Después de la inicialización, se puede utilizar el apuntador para referenciar los datos direccionados.
- Para asignar una dirección de memoria a un apuntador se utiliza el operador de referencia &. Asi, por ejemplo: &valor significa "la dirección de valor”. El método de inicialización requiere: • Asignar memoria definiendo una variable y a continuación hacer que el apuntador apunte al valor de la variable. int i; /* define una variable i */ int *p; /* define un puntero a un entero p */ p = &i; /* asigna la dirección de i a p */ • Asignar un valor a la dirección de memoria. *p = 50;
- proporciona a ese apuntador la dirección del dato correspondiente. Después de la inicialización, se puede utilizar el apuntador para referenciar los datos direccionados.
- Indireccion
- es
- el uso de un apuntador para obtener el valor al que apunta, es decir, su dato apuntado se denomina indireccionar el puntero (“desreferenciar el apuntador”); para ello, se utiliza el operador de indireccion *. int edad; int* p_edad; p_edad = &edad; *p_edad = 50;
- es
- Apuntadores y verificaion de tipos
- es cuando
- los apuntadores se enlazan a tipos de datos específicos, de modo que C verificará si se asigna la dirección de un tipo de dato al tipo correcto de apuntador.
- es cuando
- Un apuntador es
Apuntadores a funciones
- Tales funciones se pueden llamar de un modo indirecto, es decir, mediante un apuntador cuyo valor es igual a la dirección inicial de la función en cuestión. La sintaxis general para la declaración de un apuntador a una función es: Tipo_de_retorno (*PunteroFuncion) (<lista de parámetros>); Este formato indica al compilador que PunteroFuncion es un apuntador a una función que devuelve el tipo Tipo_de_retorno y tiene una lista de parámetros.
Apuntadores a apuntadores
- Un apuntador puede dirigirse a otra variable apuntador. Para declarar un apuntador a un apuntador se hace preceder de la variable con dos asteriscos (**). En el siguiente ejemplo, ptr5 es un apuntador a un apuntador. int valor_e = 100; int *ptr1 = &valor_e; int **ptr5 = &ptr1;
Las Direcciones en memoria
- es
- cuando una variable se declara, se asocian tres atributos fundamentales con la misma: su nombre, su tipo y su dirección en memoria.
- Al valor de una variable se accede por medio de su nombre. Por ejemplo, se puede imprimir el valor de n con la sntencia: printf(“%d”,n); La dirección de la variable se accede mediante el operador de dirección &. Por ejemplo, se pude imprimir la dirección de n con la sentencia: printf(“%p”,&n);
- cuando una variable se declara, se asocian tres atributos fundamentales con la misma: su nombre, su tipo y su dirección en memoria.
- es
Función de asignación de memoria malloc( )
- malloc( ) devuelve un apuntador, que es la dirección del bloque asignado de memoria. El apuntador se utiliza para referenciar el bloque de memoria; devuelve un apuntador del tipo void*. La forma de llamar a la función malloc() es : puntero = malloc(tamaño en bytes); Generalmente se hará una conversión al tipo del apuntador: tipo *puntero; puntero =(tipo *)malloc(tamaño en bytes); Sintaxis de llamada a malloc( ) tipo *puntero; puntero =(tipo*)malloc(tamaño); La función devuelve la dirección de la variable asignada dinámicamente, el tipo que devuelve es void*. Prototipo que incluye malloc( ) void* malloc(size_t n);
Information
- Description
- Otro programacion Mind Map on Apuntadores, created by MARIA FERNANDA MEDINA GUZMAN on 14/10/2022.
- Created by
- MARIA FERNANDA MEDINA GUZMAN · Oct 2022
- Updated
- Oct 14, 2022
- Views
- 0
- History
-
- Created by MARIA FERNANDA MEDINA GUZMAN · Oct 14, 2022
- Copied by MARIA FERNANDA MEDINA GUZMAN · Oct 14, 2022
- Copied by MARIA FERNANDA MEDINA GUZMAN · Oct 14, 2022
- Rating