Cプログラミング
 Computer >> コンピューター >  >> プログラミング >> Cプログラミング

C言語のコールバック関数とは?関数ポインタを使った実装方法を解説

コールバック(Callback)とは、他のコードに引数として渡され、あらかじめ決められたタイミングで呼び出される(実行される)ことが期待される実行可能なコードのことです。別の言い方をすれば、ある関数への参照(ポインタ)が、呼び出しのために別の関数の引数として渡される場合、その関数を「コールバック関数」と呼びます

この仕組みにより、処理の流れの中で後から任意の処理を差し込むことができ、柔軟で再利用性の高いプログラム設計が可能になります。イベント駆動型プログラミングやライブラリ設計などでも広く活用されている重要な概念です。

C言語では、コールバック関数を実現するために関数ポインタを使用する必要があります。以下のコードは、コールバック関数がどのようにタスクを実行するかを示した例です。

サンプルコード

#include<stdio.h>
void my_function() {
    printf("This is a normal function.");
}
void my_callback_function(void (*ptr)()) {
    printf("This is callback function.\n");
    (*ptr)();    //calling the callback function
}
main() {
    void (*ptr)() = &my_function;
    my_callback_function(ptr);
}

実行結果

This is callback function.
This is a normal function.

コードの解説

このプログラムの処理の流れは以下の通りです。

  • my_function():通常の関数です。ここでは単純にメッセージを表示します。
  • my_callback_function():関数ポインタ ptr を引数として受け取るコールバック関数です。自身のメッセージを表示した後、(*ptr)() によって渡された関数を呼び出します。
  • main() 内で my_function のアドレスを関数ポインタに代入し、それを my_callback_function() に渡しています。

実行結果を見ると、まずコールバック関数側のメッセージが表示され、続いて引数として渡された my_function() のメッセージが表示されていることがわかります。これがC言語における基本的なコールバックの仕組みです。

  1. JavaScriptで関数をコールバックとして渡す方法

    JavaScriptで関数をコールバックとして渡すJavaScriptでは、関数は第一級オブジェクト(ファーストクラスオブジェクト)として扱われるため、他の値と同じように変数に代入したり、引数として別の関数に渡したりすることができます。このように引数として渡され、後から呼び出される関数をコールバック関数と呼びます。コールバックを活用することで、処理の柔軟性が高まり、再利用可能なコードを書くことができます。以下は、add2() 関数を multiply9() 関数のコールバックとして渡すサンプルコードです。コード例<!DOCTYPE html> <html lang="

  2. C言語のfillpoly()関数とは?図形の塗りつぶし方法を解説

    概要C言語のグラフィックス用ヘッダーファイル「graphics.h」には、三角形、四角形、五角形、六角形などの多角形(ポリゴン)を描画し、その内部を塗りつぶすための fillpoly() 関数が用意されています。この関数は、線のみを描く drawpoly() 関数と同じ引数を受け取る点が特徴です。構文void fillpoly( int number, int *polypoints );各引数の意味は以下の通りです。number:頂点の数を n とした場合、「n + 1」個の点の数を指定します。polypoints:「n × 2」個の整数からなる配列へのポインタです。整数は2つで1組となり、