LoginSignup
1
0

C言語 typedefを用いた関数ポインタの使用~配列内に関数を格納~

Posted at

概要

この記事はメモ用として記載しています。
したがってとても簡素に記述しているため、ご了承ください。
今回は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);
}
1
0
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0