Decir que tengo esta función:¿Por qué puedo invocar una función mediante un puntero con demasiados argumentos?
int func2() {
printf("func2\n");
return 0;
}
Ahora declarar un puntero:
int (*fp)(double);
Esto debería apuntar a una función que toma un argumento y devuelve un double
int
.
func2
no tiene ningún argumento, pero aún cuando escribo:
fp = func2;
fp(2);
(con 2
ser sólo un número arbitrario), func2` se invoca correctamente.
¿Por qué es eso? ¿No tiene sentido la cantidad de parámetros que declaro para un puntero de función?
la respuesta corta es "declarar una función sin argumentos ... y luego pasa deliberadamente un argumento ... es simplemente incorrecto". – paulsm4