スポンサードリンク
HOME > C言語 > 関数のポインタ

C言語 - 関数のポインタ

変数を指すポインタはありますが、関数を指すポインタも使う事ができます。

関数のポインタは、そのアドレス値を使って関数を呼び出す事ができます。

#include <stdio.h>

int menseki(int teihen, int takasa);

void main(void) {
   int ans;
   int (*kp)(int, int); // 関数ポインタの宣言
   
   // menseki関数のアドレスを関数ポインタkpへ代入
   kp = menseki;

   // 関数ポインタkpを使ってmenseki関数の呼び出し
   ans = (*kp)(10, 5);

   printf("面積=%d\n", ans);

}

int menseki(int teihen, int takasa)
{
   return teihen * takasa / 2;
}


このプログラムの関数ポインタ宣言では、

戻り値がint型で第1、第2引数にint型を持つタイプのポインタが宣言されています。

この関数ポインタに、戻り値の型が違う関数や、

引数の型が違う関数、引数の数が違う関数のアドレスを代入して

関数を呼び出すとコンパイル時に警告やエラーがでたり、

実行時に意図しない動作する場合があります。

宣言時と同じ戻り値、同じ引数の型、同じ引数の数を持つ関数のアドレスだけを

代入して使う
ようにしましょう。

関数ポインタによる関数呼び出しのところでは、

ans = kp(10, 5);

と言う記述方法も可能です。

使いやすい方を使って下さい。



関数のポインタは、プログラマの腕によって高度な使い方も可能ですので、

機会があれば使ってみて下さい。



スポンサードリンク







HOME

言語解説編
プログラミング用語・知識

C言語

C++言語

Java

C#

Visual Basic.NET

アプリケーション編
C言語による
コンソールプログラミング




Copyright (C) プログラミングランド All Rights Reserved