mi piacerebbe capire qual è la differenza tra i 2 dichiarazioni, f1
e f2
, al di sotto: In f1
dichiaro il parametro di essere un puntatore a una funzione di tipo void()
, come è la dichiarazione f2
diverso dal f1
? Le dichiarazioni sono equivalenti? In main
posso richiamare entrambi con le funzioni del prototipo void()
. Capisco il concetto di passare per valore/puntatore/riferimento, tuttavia queste sono funzioni e non capiscono veramente la differenza. Non è che io possa "modificare" la funzione passata come parametro in f1
... Grazie!Puntatore per il funzionamento del parametro parametro vs funzione?
PS: è venuto da questa domanda quando sbattere contro il ben noto problema più fastidiosi di analisi :)
#include <iostream>
using namespace std;
void f1(void (*x)())
{
x();
}
void f2(void x())
{
x();
}
void g1()
{
cout << "Invoking f1(g1())" << endl;
}
void g2()
{
cout << "Invoking f2(g2())" << endl;
}
int main()
{
f1(g1);
f2(g2);
}
Il programma viene compilato e l'uscita è
Invoking f1(g1())
Invoking f2(g2())
Grazie a tutti, capito :) – vsoftco