yashiganiの英傑になるまで死ねない日記

週末はマスターバイクでハイラルを走り回ります

なんとなしに関数ポインタなどを使ってみた

関数ポインタって言葉は聞いたことあったけど,実体はなんぞ?ってことでちょいと調べてやってみた.

#include<stdio.h>

int add(int a, int b){
  return a + b;
}

int sub(int a, int b){
  return a - b;
}

int mul(int a, int b){
  return a * b;
}

int div(int a, int b){
  return a / b;
}

int main(int argc, char* argv[]){
  int a = 8;
  int b = 4;

  int i;

  int (*fp[])(int a, int b) = {
    add,
    sub,
    mul,
    div
  };

  for(i = 0; i < 5; i++)
    printf("%d \n", (*fp[i])(a, b));

}

こんな感じのコードを書けば,いい感じに実行してくれます.

> gcc -o tryPFunc tryPFunc.c
> ./tryPFunc 
12 
4 
32 
2 

なんとなく使い方もわかったけど,使いこなすにはちゃんと設計しないといけないなー,みたいに思いましたとさ.