07/05/08 21:13:20
#include<stdio.h>
void print0(){ printf("print0\n"); }
void print1(){ printf("print1\n"); }
void print2(){ printf("print2\n"); }
void print3(){ printf("print3\n"); }
void print4(){ printf("print4\n"); }
typedef void(*voidfunc_t)();
voidfunc_t*asdf(voidfunc_t*a,voidfunc_t*b){
voidfunc_t*t=a; a=b; return b=t;
}
int main(void){
void(*a[5])();
voidfunc_t*(*f)(voidfunc_t*,voidfunc_t*);
[ X ]
f=asdf;
f(&a[2],f(&a[3],f(&a[4],f(&a[0],f(&a[1],&a[2])))));
for(int i=0;i<5;i++) (a[i])();
return 0;
}
の実行結果が
print0
print4
print2
print3
print1
となるには[ X ]の部分になんと記述すればよいか