EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
一、函数指针的声明与初始化 ... ) B% p) `; e2 X. Z% u
int max_fun(int a, int b); 0 l7 J" ]; _# a2 N
/*函数指针的声明,声明了两个形参都为int类型,返回值为int类型的函数指针*/ int (*fp)(int, int); o s3 x+ A; v
/*指针初始化*/ fp = max_fun; //fp = &max_fun 也正确 8 ?$ [0 S# d; u* @0 ?; L& T; E: H
/*函数指针初始化后的调用*/ fp(a,b); //(*fp)(a,b);也正确
5 f! X+ h) z3 `& ?... 二、函数指针的typedef typedef void (*irq_func)(int); & ]6 y3 L( g8 k2 G
//定义一个数组,存放中断函数指针,其参数类型为irq_func
5 A& e+ o8 @4 o& \" J, Lirq_func irq_array[32]; 三、函数指针数组的使用 /* 注册中断函数,将中断函数以指针形式存放在数组中 */ void register_irq(int irq, irq_func fp) { irq_array[irq] = fp; INTMSK &= ~(1 << irq); //关闭中断屏蔽 } /* 此处将fp函数传入数组,由于函数名在表达式会蜕变为指针, * 所以调用register_irq()时第二个参数只需要传入函数名 */ register_irq(0, key_eint_irq); 数组元素的使用:irq_array[bit](bit); 将irq_array[bit]替换为一个函数名更容易理解。 * o3 x+ c/ q, p! h
9 ?5 h( I# r F: b0 v1 \1 F# ?* f; D' X' G/ [% B! P. f
|