Herramientas de usuario

Herramientas del sitio


funciones

¡Esta es una revisión vieja del documento!


Punteros a funciones

No existen variables de tipo “función”, pero es posible tener una variable que es un puntero a una función. Esto es especialmente útil como parámetros para funciones. El siguiente es un ejemplo de un función de ordenamiento genérico, es decir permite ordenar objetos de acuerdo a un criterio definido por una función que se se recibe como parámetro:

<code>

      /* ordena datos de cualquier tipo usando Quicksort */
      
      void swap(void *v[], int i, int j)
        {
          void *aux;
      
          aux=v[i];
          v[i]=v[j];
          v[j]=aux;
        }
      
      void qsort(void *a[], int left, int right,
                 int (*compare)(void *, void *))
        {
          int i, last;
      
          if(left>=right)
              return;
      
          swap(a, left, (left+right)/2);
          last=left;
      
          /*
                +--+-----------+--------+--------------+
                |  |///////////|\\\\\\\\|              |
                +--+-----------+--------+--------------+
                left        last         i         right
          */
      
          for(i=left+1; i<=right; ++i)
              if((*compare)(a[i], a[left])<0)
                  swap(a, ++last, i);
          swap(a, left, last);
      
          qsort(a, left, last-1, compare);
          qsort(a, last+1, right, compare);
        }
funciones.1346026149.txt.gz · Última modificación: 2012/08/27 00:09 por lmateu