Cで関数を受けるポインタを作成する。
gcc で動いたのでメモ。以下のコードは helloworld とターミナルに出力する。
#include <stdio.h> void sub(void){ printf("hello"); } void sub0(void){ printf("world"); } int main(void){ void (*a)(void)=sub; a(); a=sub0; a(); return 0; }
[2010.10.24]次のコードも走ったのでメモ。void型ポインタでも関数ポインタにキャストができる。
#include <stdio.h> int sub0 (int a) { printf("%dhello",a); return a+1; } int sub1 (int a, int b) { printf("%d%dworld",a,b); return a+b+1; } int main(void){ void * a; a=sub0; ((int(*)(int))a)(1); a=sub1; ((int(*)(int,int))a)(2,3); }