C古典関数ポインタの使用


定義方法:int(*p)(int x,int y);
#include <stdio.h>
int sum(int x, int y){
    return  x + y;
}
int reduce(int x, int y){
    return x - y;
}
int multiply(int x, int y){
    return  x * y;
}
float divide(int x, int y){
    if(y ==0)
        return 0;
    else
        return  x *1.0f/ y;
}

int main(int argc, const char * argv[])
{

    // 1.      
    int (*p)(int x, int y);
    // 2.   
    p = sum;
    // 3.  
    int s = p(3,2);
    // 4.  
    printf("%d
"
,s);//=5; //-------------- printf(" 1,2,3,4
"
); int num; scanf("%d",&num); switch (num) { case 1: p = sum; break; case 2: p = reduce; break; case 3: p = multiply; break; case 4: p = divide; break; } int result = p(22,2); printf("%d
"
,result); return 0; }