Acerca de mi

Punteros

Un puntero es una variable que contiene la dirección de memoria de otra variable, permiten el desarrollo de código más compacto y eficiente, generando así un código mas ordenado y de gran flexibilidad.

Características:

  • La dirección de memoria de una variable se obtiene con el operador unario &.
  • El operador unario * permite la desreferencia de un variable puntero (indirección).

Ejemplos:

			char a;         /* Variable 'a' de tipo char */
                        char *pchar;    /* Puntero a char 'pchar' */
                        pchar = &a;     
   			printf("la direccion de memoria de 'a' es: %p \n", &a);
                        printf("y su contenido es : %c \n", *pchar);
		

Indirección Múltiple

Se puede hacer que un puntero apunte a otro puntero que a su vez apunte a un valor de destino. Esta situación se denomina indirección múltiple o punteros a punteros. Una variable que es puntero a puntero tiene que declararse como tal. Esto se hace colocando un * adicional en frente del nombre de la variable. Por ejemplo, la siguiente declaración inicial indica al compilador que ptr es un puntero a puntero de tipo float:

				float **pt;
			

Es importante entender que pt no es puntero a flotante, sino un puntero a un puntero flotante

Funciones de asignación dinámica, malloc() y free()

La asignación dinámica es la forma en la que un programa puede obtener memoria mientras se está ejecutando.

El centro del sistema de asignación dinámica está compuesto por las funciones (existentes en la biblioteca stdlib.h) malloc(), que asigna memoria; y free() que la devuelve.

Ejemplo:

El fragmento de código que sigue asigna 1000 bytes de memoria:

			char *p;
			p = (char *) malloc(1000);

		

La función free() es la opuesta de malloc() porque devuelve al sistema la memoria previamente asignada. Una vez que la memoria ha sido liberada, puede ser reutilizada en una posterior llamada a malloc(). El prototipo de la función free() es:

			void free (void *p);
			free(p);
		

Actividades.

1) Diseñe un programa que muestre el uso de operadores básicos en la declaración de punteros empleando el direccionamiento y el operador indireccion.

2) Diseñe un programa, que sume dos variables de tipo entero, por medio de apuntadores.

Choose Colour