Function Pointer in C
Function Pointer 是C語言最重要的高等特色之一,最常見的例子就是 State Machine 的實作以及排序演算法的 compare function 輸入。下面的程式碼只是要記錄一個基本的用法,方便之後使用參考,畢竟從來沒用過(雖然知道很久了)。
#include <stdio.h>
int sum( int, int );
int sub( int, int );
int mul( int, int );
int mod( int, int );
int (*op[4]) ( int, int ) = { sum, sub, mul, mod };
int main()
{
....int a, b, i;
....a = 5;
....b = 3;
....for( i = 0 ; i < 4; i++ )
........printf("Operation %d result: %d\n", i, (*op[i])(a, b) );
....}
....return 0;
}
int sum( 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 mod( int a, int b ) { return a%b; }
#include <stdio.h>
int sum( int, int );
int sub( int, int );
int mul( int, int );
int mod( int, int );
int (*op[4]) ( int, int ) = { sum, sub, mul, mod };
int main()
{
....int a, b, i;
....a = 5;
....b = 3;
....for( i = 0 ; i < 4; i++ )
........printf("Operation %d result: %d\n", i, (*op[i])(a, b) );
....}
....return 0;
}
int sum( 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 mod( int a, int b ) { return a%b; }
留言
張貼留言