函數指針的定義:
void (*point_fun)(const char *str);
point_fun先和*結合是指針,()是函數運算符,所以這個指針是指向函數的
[cpp]
#include <stdio.h>
void say_hello(const char *str);
void (*point_say_hello)(const char *str);//point_say_hello先和*結合是指針,()是函數運算符,所以這個指針是指向函數的
typedef void FUN(const char *str); //定義類一個FUN的函數類型
FUN say_typedef;//用上面定義的類型定義,FUN型的變量,相當於聲明一個函數。
FUN *point_say_typedef;//用上面定義的類型定義,FUN型的指針,相當於定義一個函數指針。
void (*say_table[2])(const char *str);//根據運算符的先後順序可知,say_table是個數組;數組的元素是指針,指向函數的指針。
//void (*say_table[2])(const char *str) = {point_say_hello, point_say_typedef};
#define say_interface(a) say_table[a]("lang")//相當於接口
typedef void (*POINT_FUN)(const char *str); //定義類一個POINT_FUN的函數指針類型
POINT_FUN point_fun ;
void main(){
printf("lang start \n");
point_say_hello = say_hello;
point_say_hello("langxw");
point_say_typedef = say_typedef;
point_say_typedef("langxw");
say_table[0] = point_say_hello;
say_table[1] = point_say_typedef;
say_interface(0);
say_interface(1);
point_fun = say_hello;
point_fun("point_fun");
}
void say_hello(const char *str){
printf("hello %s \n", str);
}
void say_typedef(const char *str){
printf("typedef %s \n", str);
}
#include <stdio.h>
void say_hello(const char *str);
void (*point_say_hello)(const char *str);//point_say_hello先和*結合是指針,()是函數運算符,所以這個指針是指向函數的
typedef void FUN(const char *str); //定義類一個FUN的函數類型
FUN say_typedef;//用上面定義的類型定義,FUN型的變量,相當於聲明一個函數。
FUN *point_say_typedef;//用上面定義的類型定義,FUN型的指針,相當於定義一個函數指針。
void (*say_table[2])(const char *str);//根據運算符的先後順序可知,say_table是個數組;數組的元素是指針,指向函數的指針。
//void (*say_table[2])(const char *str) = {point_say_hello, point_say_typedef};
#define say_interface(a) say_table[a]("lang")//相當於接口
typedef void (*POINT_FUN)(const char *str); //定義類一個POINT_FUN的函數指針類型
POINT_FUN point_fun ;
void main(){
printf("lang start \n");
point_say_hello = say_hello;
point_say_hello("langxw");
point_say_typedef = say_typedef;
point_say_typedef("langxw");
say_table[0] = point_say_hello;
say_table[1] = point_say_typedef;
say_interface(0);
say_interface(1);
point_fun = say_hello;
point_fun("point_fun");
}
void say_hello(const char *str){
printf("hello %s \n", str);
}
void say_typedef(const char *str){
printf("typedef %s \n", str);
}
end