1 / 22

APUNTADORES

APUNTADORES. Agenda. Las variables y la Memoria Direcciones de Memoria Introducción a los apuntadores Concepto de un Apuntador Apuntadores. DIRECCIONES DE MEMORIA. La declaración de una variable involucra necesariamente 4 cosas:. int y;. int y=25;. int z=77;. El nombre,

Download Presentation

APUNTADORES

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. APUNTADORES

  2. Agenda • Las variables y la Memoria • Direcciones de Memoria • Introducción a los apuntadores • Concepto de un Apuntador • Apuntadores

  3. DIRECCIONES DE MEMORIA La declaración de una variable involucra necesariamente 4 cosas: int y; int y=25; intz=77; El nombre, El tipo de Datos, Su valor y … Su Dirección en memoria.

  4. MEMORIA DIRECCIONES DE MEMORIA II Al valoro contenido de una variable se accede por medio de su nombre. Si quiero imprimir el valor de una variable debo utilizar simplemente su nombre: printf("%d", y); El operador &antepuesto al nombre de una variable da la dirección de memoria de la variable printf("%d", &y); //Imprime la dirección de memoria de la variable y //NO SU CONTENIDO

  5. MEMORIA DIRECCIONES DE MEMORIA III #include <stdio.h> void main() { int y = 25; int z=77; int y = 25; int z=77; print f ( “y = %d\n" , y) ; / * visualiza el valor de y * / print f ( “y = %d\n" , y) ; / * visualiza el valor de y * / printf ("&y = %p\n",& y) ; / * visualiza dirección de y * / printf ("&y = %p\n",& y) ; / * visualiza dirección de y * / } y = 25 &y = 1002 y = 25

  6. ConceptoApuntador • Características de un Apuntador: • El apuntador apunta a algo. • Cuando se habla de apuntadores o señaladores hablamos de dos ENTES. • Cuando se señala algo habrá que tener una referencia de donde está ese algo.

  7. INTRODUCCIÓN APUNTADORES-Punteros-pointers Los apuntadoresSon una de las razones fundamentales para que el lenguaje C sea tan potente y por ende tan utilizado. En los sistemas de Cómputo los datos se manejan por medio de variables y….. La forma como una variable puede apuntar a otra variable es por medio de la dirección en memoria de la variable señalada.

  8. INTRODUCCIÓN APUNTADORES-Punteros-pointers Las variables vistas hasta este momento contienen valores cualquiera de datos cualquiera, por el contrario las variables punteros contienen valores que son direcciones de memoria donde se almacenan otras variables. Utilizando variables punteros un programa puede realizar muchas tareas que no sería posible solo utilizando tipos de datos estándar.

  9. Apuntadores ConceptoApuntador • Características de un Apuntador: • Un puntero es una variable como cualquier otra… • EXCEPTO QUE SOLO PUEDE ALMACENAR DIRECCIONES DE OTRAS VARIABLES COMÚN Y CORRIENTES. • Un puntero APUNTA a otra variable en memoria. El tipo de variable que almacena una dirección se denomina puntero.

  10. Apuntadores ConceptoApuntador Cuando se declara una variable en C, el compilador establece un área de memoria para almacenar el contenido de la variable. Esa variable se sitúa en una posición específica de la memoria, conocida como dirección de memoria. Se utilizan los apuntadores para optimizar el acceso a esas variables. int y=25; intz=77; Un puntero en C es una Variable que SOLO guarda la dirección de memoria de otra variable.

  11. Apuntadores Declaración de Apuntadores Como cualquier variable, las variables punteros han de ser declaradas antes de utilizarlas. Se utiliza asterisco (*) para indicar que la variable es variable apuntador. tipoDatoApuntado*nombreVbleApuntador; Ejemplos: int *ptr1; // Puntero a un tipo de dato entero (int) char *ptr2; / * Puntero a un tipo de dato char * / float *f; / * Puntero a un tipo de dato float * / SIEMPRE que aparezca un asterisco ( * ) en una declaraciónde una variable, ésta es una variable puntero.

  12. Apuntadores Inicialización de Apuntadores Una variable apuntador contiene …….. LA DIRECCIÓN DE UNA VARIABLE Como se obtiene la dirección de una variable ??? Con el operador & Ejemplo: &y printf( “y = %d\n" , y); ???? y = 53 printf( “&y = %d\n" , &y); ???? &y = 5012

  13. Apuntadores Inicialización de Apuntadores int i; /* Define una variable i */ int *ptr;/* Define un puntero a un entero ptr*/ /* Almacene la dirección de i en ptr, como???? */ ptr = i ; MAPA DE MEMORIA ?????

  14. Apuntadores Indirección Se puede acceder al valor de una variable apuntada utilizando el nombre del apuntador. En el procedimiento del algoritmo simplemente se le antepone " * " al nombre del apuntador y se accede al valor de la variable de una forma común y corriente MAPA DE MEMORIA ????? //Ejemplo voidmain(void) { int var1; int i=3; int *ptr; ptr = &i; var1=*ptr; var1++; *ptr=var1; }

  15. EJEMPLO Ejemplo Programa que declare una variable tipo carácter y la inicialice con la letra O. Cree un apuntador a esta letra e imprimala utilizando el apuntador(indirección)

  16. OPERADORES OperadoresEsenciales Operadores Vistos & * * Obtiene la dirección de una variable. Define una variable como puntero (DECLARACIÓN). Obtiene el contenido de una variable puntero (PROCEDIMIENTO). C requiere que las variables puntero direccionen realmente variables del mismo tipo de dato que está ligado a los punteros en sus declaraciones.

  17. TiposEspeciales Apuntadores NULL La macro NULL es una macro que representa un valor de CERO Alguna librerías la definen: STDEF. H, STDIO.H, STDLIB.H, STRING.H La podemos definir #define NULL 0 Cuando se declara y no se inicializa un apuntador a donde está apuntando???? char *ptr; Muchas veces se hace necesario expresar explicitamente que un apuntador declarado no este apuntando a "NINGÚN" lugar (En apuntadores quiere decir que el apuntador apunta a la dirección CERO ) char *ptr = NULL;

  18. TiposEspeciales Apuntadores VOID Se utiliza la palabra reservada VOID en la declaración de apuntadores, cuando se quiere que el puntero pueda apuntar a cualquier tipo de variables, int , char, float,…. intmain(){ void *ptr; / * declara un puntero void.Puntero genérico * / char cadena; int numero; ptr=&cadena; ptr=&numero; return 0; }

  19. PUNTEROS A PUNTEROS PUNTEROS A PUNTEROS Un apuntador es una variable. Como toda variable tiene un espacio en memoria, tiene un nombre, tiene un valor (Dirección de otra espacio en memoria) Como un apuntador es una variable más, podemos tener otro apuntador apuntando a éste.

  20. PUNTEROS A PUNTEROS PUNTEROS A PUNTEROS El concepto de apuntar a otro apuntador se utiliza con mucha frecuencia en programas complejos de C. Se hace uso del operador * 2 veces Ejemplo: Declaremos una variable tipo carácter, también un apuntador a esta variable. Y luego declaremos un puntero que apunte a este ultimo puntero. char letra = ´A´; char *ptr1 = &letra; char**ptr2 = &ptr1; Para acceder al contenido de letra se puede hacer por medio de: La misma variable El apuntador ptr1 El apuntador ptr2

  21. Bibliografía • Joyanes Aguilar, Luis. PROGRAMACIÓN EN C. Metodología, algoritmos y estructura de datos Capitulo10. • Google

  22. GRACIAS POR SU ATENCIÓN

More Related