auの日記

プログラミング初心者の日記。(auはハンドルネームです)

C言語の関数ポインタ

auです。
今回は関数ポインタについて調べました。

関数ポインタとは

関数ポインタとは、関数アドレスを格納するためのポインタ変数のことです。
変数ポインタは以前触れました。それの関数バージョンです。

関数ポインタを宣言する

戻り値の型 (*関数ポインタ名)(引数の型1, 引数の型2...);

このように宣言します。
関数ポインタとアドレスを繋げる関数は、型が一緒でなければなりません。
関数ポインタの名前は任意の名前で大丈夫です。
aとbの足し算をするプログラムを関数ポインタを用いて記述します。

#include <stdio.h>

int add(int a, int b) {  // int型の関数名addで引数はintが2つ
    return a + b;
}

int main(void) {
    int a = 5;
    int b = 8;
    int (*p)(int, int); // int型の関数ポインタ名pで引数はintが2つ
    p = &add; //ポインタに関数名addのアドレスを格納
    printf("%d\n", (*p)(a, b)); // 出力する際の引数にintはいらない
    return 0;
}

// 実行結果
13