Punteros a Funciones en C

11,443 views

Published on

Descripción de como usar los punteros a funciones en el lenguaje de programación C.

El guión de esta presentación se encuentra en:

http://www.slideshare.net/AnesGy/script-de-punteros-a-funciones

Published in: Technology
  • Be the first to comment

Punteros a Funciones en C

  1. 1. Punteros a Funciones G.W.C.
  2. 2. Estructura de la Memoria Sistema Operativo Memoria Global Código del Programa 1 Memoria Global Pila (Stack) Pila (Stack) Código del Programa 2 Memoria Global Pila (Stack) Montículo (Heap) Memoria libre del sistema (Montículo o Heap)
  3. 3. Estructura de la Memoria Código Máquina Código del Programa :main instrucciones 3F5000AC 3F5000AD ... 3F5000AE :bolzano 3F5000C8 Memoria Global instrucciones 3F5000C9 ... 3F5000CA :mifunción 3F50019E instrucciones 3F50019F Pila ... 3F5001A0
  4. 4. Declaración de punteros a función tipo (*miPaF) (tipo, …); :main 3F5000AC instrucciones 3F5000AD ... 3F5000AE miPaF = mifunción; :bolzano 3F5000C8 instrucciones 3F5000C9 ... 3F5000CA miPaF apunta a 3F50019E :mifunción 3F50019E instrucciones ... 3F50019F 3F5001A0 (* miPaF) (parámetros); Ejemplo: double (*func) (double); func = sin; printf("%f", (*func) (1.56)) ;
  5. 5. Declaración de un tipo typedef tipo (*miTipo) (tipo, …) miTipo variable; Ejemplo: typedef double (*miFunc) (double); miFunc func; func = sin; printf("%f", (*func) (1.56)) ;
  6. 6. Utilidad de los Punteros a Funciones • Creación de procedimientos que requieren una función como Parámetro: – Creación de procedimientos más versátiles o genéricos (por ejemplo, la versión del programa Bolzano que sigue). – Funciones personalizables (por ejemplo, una función que ordene elementos de una matriz según un criterio dado por una función de tu elección). – Interfaces Gráficas de Usuario (GUI). • Llamado de funciones de forma secuencial Esto implica tener una matriz de punteros a función. double (*fptrs[])(double, … ) = { … }; //Con una declaración de variable miTipo fptrs[] = { … }; //Con una declaración de tipo (*fptrs[1])(parámetros); //Se llaman así.
  7. 7. Función de ejemplo Bolzano Esta función usa un puntero a función para poder buscar ceros en cualquier función que devuelva double y requiera un double como parámetro.
  8. 8. Bolzano No i < 100 return med f, min, max f(min) Si med = (max – == 0 return min min) / 2 + min f(max) Si f(med) Si == 0 return max == 0 return med f(max)* No return f(med)* No f(min ) f(max ) max = med <0 NAN <0 i=0 min = med i ++

×