関数ポインタ
前にも書いたかもしれないですが,きちんと覚えるまで何回でも書き直しましょう(笑)
//関数ポインタの実験 //結果 関数ポインタはキャストできないので,voidのポインタで渡すことで回避可能. #include "stdafx.h" #define CNT 5 void v_test_v5(void){ printf("v_test_v5\n"); } void v_test_v4(void){ printf("v_test_v4\n"); } void v_test_v3(void){ printf("v_test_v3\n"); } void v_test_v2(void){ printf("v_test_v2\n"); } void v_test_v(void){ printf("v_test_v\n"); } int i_test_i(int i){ printf("%d i_test_i\n",i+10); return i+10; } int main(int argc, char* argv[]) { // void (*fp)() = v_test_v; //これが関数を指し示すポインタ 宣言時に関数のアドレスをセットする場合 // void (*fp)(); //これが関数を指し示すポインタ // fp = v_test_v; //宣言後に関数のアドレスをセットする場合 // fp(); //実行 // void (*fp[CNT])(); //関数ポインタの配列 // int i; // fp[0] = v_test_v; //宣言後に関数のアドレスをセット // fp[1] = v_test_v2; // fp[2] = v_test_v3; // fp[3] = v_test_v4; // fp[4] = v_test_v5; // for(i=0;i