Puntero a función.

Iniciado por fafafa01, 18 Diciembre 2016, 00:05 AM

0 Miembros y 1 Visitante están viendo este tema.

fafafa01

Buenas, tengo una duda con este código que creo que esta mal:


No tendría que ser:

(int (*)(viod *, void *))=(numeric ? numcmp:strcmp));

MAFUS

No, está bien tal y como muestra el código.
(int (*) (void *, void *)) es un cast sobre la función devuelta por (numeric ? numcmp : strcmp)

fafafa01

#2
haa, el cast seria porque las funciones tienen  como argumentos punteros a char y el puntero a la función espera punteros a void ¿no?. es decir ¿los argumentos de las funciones que son punteros a char se convierten a punteros a void?¿cuando se vuelven a convertir en punteros char?

ivancea96

Cita de: fafafa01 en 18 Diciembre 2016, 02:04 AM
haa, el cast seria porque las funciones tienen  como argumentos punteros a char y el puntero a la función espera punteros a void ¿no?. es decir ¿los argumentos de las funciones que son punteros a char se convierten a punteros a void?¿cuando se vuelven a convertir en punteros char?

La función pide como parámetro una función con parámetros void*, y eso es lo que le das.

Si alguien transforma los void* a char*, ese es la función qsort internamente.