はじめに
関数へのポインタは、変数が値のメモリアドレスを格納するのと同じように、関数のメモリアドレスを格納する方法です。関数ポインタを通じて関数が呼び出されるとき、それは関数へのポインタと呼ばれます。
この実験では、関数ポインタを使う方法を示すための C プログラムを書きます。
ポイントする関数を宣言および定義する
このステップでは、2 つの整数引数をとり、何も返さない関数を宣言および定義します。
#include<stdio.h>
void func(int a, int b)
{
printf("\n\n a = %d \n", a);
printf("\n\n b = %d \n", b);
}
関数へのポインタを宣言する
このステップでは、ステップ 1 で作成した関数へのポインタを宣言します。関数へのポインタを宣言する構文は、変数へのポインタを宣言する構文と似ていますが、ポイントする関数のパラメータ型と戻り値型を指定します。
// function pointer
void (*fptr)(int, int);
関数のアドレスをポインタに格納する
このステップでは、ステップ 1 で作成した関数のアドレスを、ステップ 2 で作成したポインタに格納します。
// assign address to function pointer
fptr = func;
ポインタを使って関数を呼び出す
このステップでは、ステップ 2 で作成した関数ポインタを使って、ステップ 1 で作成した関数を呼び出します。
// function calling
func(2,3);
fptr(2,3); // calling a function referring to pointer to a function
完全なコードを書く
~/project/ ディレクトリ内の main.c ファイルを開きます。
#include<stdio.h>
void func(int a, int b)
{
printf("\n\n a = %d \n", a);
printf("\n\n b = %d \n", b);
}
int main()
{
printf("\n\n\t\tLabEx - Best place to learn\n\n\n");
// function pointer
void (*fptr)(int, int);
// assign address to function pointer
fptr = func;
// function calling
func(2,3);
fptr(2,3); // calling a function referring to pointer to a function
printf("\n\n\t\t\tCoding is Fun!\n\n\n");
return 0;
}
コードをコンパイルして実行する
コードをコンパイルするには、ターミナルを開き、次のコマンドを入力します。
gcc main.c -o main
プログラムを実行するには、次のコマンドを入力します。
./main
まとめ
この実験では、C プログラムで関数ポインタを使用する方法を学びました。関数ポインタが指す関数を宣言および定義する方法、関数ポインタを宣言する方法、関数のアドレスをポインタに格納する方法、およびポインタを使用して関数を呼び出す方法を見ました。関数ポインタの使用により、複雑なプログラムを書きやすく理解しやすくすることができます。



