通常の関数の呼び出し: 呼び出し元のプログラムが通常の関数の呼び出しを発行した後、呼び出された関数の実行が完了するまで、プログラムの実行は直ちに呼び出された関数に移行します。その後、呼び出し元のプログラムに戻って実行を続行します。呼び出し側プログラムの観点から見ると、このプロセスは「呼び出し --> 呼び出された関数の完了を待機 --> 実行の継続」です。
コールバック関数の呼び出し: 呼び出し側プログラムがコールバック関数の呼び出しを発行した後、いいえ待機中 関数の実行後、すぐに戻り、実行を継続します。このようにして、呼び出し元のプログラムと呼び出される関数が同時に実行されます。呼び出された関数の実行が完了すると、呼び出された関数は事前に指定された関数を呼び出し、関数呼び出しが終了したことを呼び出し側プログラムに通知します。このプロセスはコールバック (Callback) と呼ばれ、コールバック関数の名前の由来となっています。
通常の関数とコールバック関数は他の関数によって呼び出されます。違いは、呼び出し元が何を呼び出しているかを正確に認識しているかどうかです。例:
void func1(){}
void func2(){}
typedef void (*fp) ();//関数ポインタを宣言します。fpはnullパラメータを表し、void
void funcCaller1()型の関数ポインタを返します{
//ここでfunc1は通常の関数とみなすことができます
func1() ;//ここで、funcCall1 は func1 を呼び出したことを明確に知っています
}
void funcCaller2(fp funcPtr){
funcPtr();//ここで、funcCall2 は自分が何を呼び出しているのか知りません。空の関数 A を呼び出したことだけを知っています。パラメータと戻り値の型は void
}
void funcCaller3(){
//ここで、funcCaller2 は通常の関数、func1 はコールバック関数です
funcCaller2(func1);// funcCaller2 を呼び出し、パラメータは func1 です
// ここで, funcCaller2 は通常の関数、func2 はコールバック関数です
funcCaller2(func2);// funcCaller2 を呼び出し、パラメータは func2 です
}
以上がコールバック関数と通常の関数の違いは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。