>>536
こんなか?

#include <stdio.h>
char* funcA_1(char *str1, char *str2 ) {
return str1;
}

char* funcA_2(char *str1, char *str2 ) {
return str2;
}

char* (*( funcB_1( char*(*funcIn)(char*,char*) ) ))(char*,char*) {
if ( funcIn == funcA_1 ) return funcA_2;
else return funcIn;
}

char* (*( funcB_2( char*(*funcIn)(char*,char*) ) ))(char*,char*) {
return funcIn;
}

int main() {
char*(*arrayA[])(char*,char*) = { funcA_1, funcA_2 };
char*(*(*arrayB[])(char*(*)(char*,char*)))(char*,char*) = { funcB_1, funcB_2 };
printf( "%s\n", arrayA[0]("test", "string") );
printf( "%s\n", arrayA[1]("test", "string") );
printf( "%s\n", arrayB[0](funcA_2)("test", "string") );
printf( "%s\n", arrayB[1](funcA_2)("test", "string") );
return 0;
}