関数ポインタ

前にも書いたかもしれないですが,きちんと覚えるまで何回でも書き直しましょう(笑)

//関数ポインタの実験
//結果 関数ポインタはキャストできないので,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