La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

APUNTADORES.

Presentaciones similares


Presentación del tema: "APUNTADORES."— Transcripción de la presentación:

1 APUNTADORES

2 Agenda Las variables y la Memoria Introducción a los apuntadores
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: 1000 1001 1002 y 1003 1004 z 1005 1000 1001 1002 y 1003 1004 1005 1000 1001 1002 1003 1004 1005 int y; 25 int y=25; int z=77; 77 El nombre, El tipo de Datos, Su valor y … Su Dirección en memoria.

4 DIRECCIONES DE MEMORIA II
Al valor o 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 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 * / } 1000 1001 1002 1003 1004 1005 1000 1001 1002 y 1003 1004 z 1005 25 77 y = 25 &y = 1002 y = 25

6 Concepto Apuntador 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 APUNTADORES-Punteros-pointers
INTRODUCCIÓN Los apuntadores Son 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 APUNTADORES-Punteros-pointers
INTRODUCCIÓN 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 El tipo de variable que almacena una dirección se denomina puntero.
Concepto Apuntador Apuntadores 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 Concepto Apuntador Apuntadores 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. 1000 1001 1002 y 1003 1004 z 1005 1000 1001 1002 y 1003 1004 1005 1000 1001 1002 1003 1004 1005 25 25 77 int y=25; int z=77; Un puntero en C es una Variable que SOLO guarda la dirección de memoria de otra variable.

11 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ón de una variable, ésta es una variable puntero.

12 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); ???? 5010 5011 5012 y 5013 5014 5015 53 y = 53 printf( “&y = %d\n" , &y); ???? &y = 5012

13 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 ????? 5020 5021 5022 i 5023 5024 ptr …….. 5022

14 Indirección Apuntadores 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 ????? 5020 5021 5022 i 5024 var1 ptr …. //Ejemplo void main(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) 5020 letra 5021 5022 5023 5024 ptrLet ´O´ …… 5020

16 Operadores Esenciales
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 Apuntadores NULL Tipos Especiales
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 Apuntadores VOID Tipos Especiales
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,…. int main(){ void *ptr; / * declara un puntero void. Puntero genérico * / char cadena; int numero; ptr=&cadena; ptr=&numero; return 0; }

19 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


Descargar ppt "APUNTADORES."

Presentaciones similares


Anuncios Google