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: por lmateu
