概要
この記事はメモ用として記載しています。
したがってとても簡素に記述しているため、ご了承ください。
今回はC言語のtypedefを用いた関数ポインタの使用についてです。
使用例
関数を配列に格納して、この配列をポインタ変数に格納しました。
ちなみに関数は以下です。
・2つの値の足し算(add)
・2つの値の引き算(sub)
・2つの値の掛け算(mul)
#include <stdio.h>
#include <stdbool.h>
typedef void (*pointer)(int *a,int *b);
void add(int *a,int *b);
void sub(int *a,int *b);
void mul(int *a,int *b);
int main(){
pointer func[3] = {add,sub,mul}; //関数ポインタを定義
int select_num;
bool input_flag = false;
int a,b;
do
{
printf("Select 0:add,1:sub,2:mul\n");
scanf("%d",&select_num);
printf("\n");
printf("first num\n");
scanf("%d",&a);
printf("\n");
printf("second num\n");
scanf("%d",&b);
printf("\n");
if (select_num >= 0 && select_num <= 2)
{
input_flag = true;
}
} while (input_flag == false);
func[select_num](&a,&b);
return 1;
}
void add(int *a,int *b){
int answer;
answer = *a + *b;
printf("%d",answer);
}
void sub(int *a,int *b){
int answer;
answer = *a - *b;
printf("%d",answer);
}
void mul(int *a,int *b){
int answer;
answer = *a * *b;
printf("%d",answer);
}