函数地址
函数是空间,函数名就是这个空间地址的常量值的代号。
所以我们可以利用数组,来保存函数的地址,通过数组对函数进行访问。
普通函数调用
我们可以通过 switch 来对函数进行调用,但是这存在的问题就是如果我想要对增加删除或修改函数名称,我都要去 switch 里面进行修改,非常的不方便。
void test01() { int day; printf("input day:"); scanf("%d", &day); switch (day) { case 1: do_music(); break; case 2: do_game(); break; case 3: do_book(); break; default: break; } }
数组函数
所以我们可以定义一个数组空间,保存函数的地址,每次调用时直接调用数组即可,这样对于函数的设置以及调用是分开来的。我们调用的函数就可以固定的一段代码,而对于函数的设置可以通过数组保存,在其它地方就可以进行修改,非常的方便。
void test02() { //定义一个数组空间,保存key,每把钥匙都是函数行为 void (*events[3])(void); //设置每天做的事情 events[0] = do_music; events[1] = do_game; events[2] = do_book; //循环每天做的事情 for (int i = 0; i < 3; i++) events[i](); }