Mientras escucha a través de un curso de Stanford Programming Abstractions, me encuentro con alguna pieza de código que se parece a la siguiente.función como parámetro vs puntero de función como parámetro
void plot(double start, double end, double (fn)(double)) {
double i;
for (i = start; i <= end; i += 1)
printf("fn(%f) = %f\n", i, fn(i));
}
double plus1(double x) {
return x + 1;
}
int main(void) {
plot(1, 10, plus1);
return 0;
}
He compilado el código en mi sistema usando GCC, luego G ++; ambos corren perfectamente.
sé que el paso de una int i = 2
en una función como void func1(int a)
hará una nueva copia de ese i
para esa función al pasar a &i
void func2(int *a)
sólo dará a la función func2
la dirección de i
.
Así Puede alguien explicar a mí lo que es el mecanismo para transmitir a fn
plot
y cómo se diferencia del que pasa un puntero a función como parámetro?
¿Tiene una referencia a su segunda reclamación sobre matrices? Especialmente cuando es C++? – krlmlr
Hay una diferencia poco, en el primer caso, 'fn' es implcitly un puntero a la función, y en el último' fn' se declara explícitamente puntero a funcionar –
@ user946850: '§8.3.5/5': ... Después determinando el tipo de cada parámetro, cualquier parámetro de tipo "array of T" o "function return T" se ajusta para que sea "puntero a T" o "puntero a función que devuelve T", respectivamente. ... – Mankarse