- #include <stdio.h>
- typedef void (*Bottle_type)(int i);//我们在这里设计了一个瓶子的模型,这个瓶子可不简单啊,可以装任何起始函数的地址呢!下面我们就拿它去制造瓶子
void vinegar(int i)//醋- {
- printf("%d: Now, I am vinegar, not bottle!/n",i);
- }
- void soy(int i)//酱油
- {
- printf("%d: Now, I am soy, not bottle and vinegar! /n",i);
- }
- int main()
- {
- Bottle_type bottle;//按照Bottle_type这个模型,制造了一个瓶子bottle.
- bottle = vinegar;//现在往瓶里加醋,你还会叫它瓶子吗?如果是的话,我不信,你去超市买醋,你会指着醋对售货小姐说,我要买这个瓶子^-^!(其实,bottle里装的就是vinegar的址址)
- (*bottle)(1);//因为bottle里面是醋,所以倒出来的也是醋啦
- bottle = soy;//现在不加醋了,太酸!加酱油吧,此时,你还会叫它瓶子或醋吗?它叫酱油了(现在bottle里装的就是soy的地址)
- (*bottle)(2);//bottle是酱油了,所以倒出来就是酱油啦
- return 0;
- }

liulife@liulife:~/test$ gcc -o test_func_p test_func_p.c
liulife@liulife:~/test$ ls
test_func_p test_func_p.c
liulife@liulife:~/test$ ./test_func_p
1: Now, I am vinegar, not bottle!
2: Now, I am soy, not bottle and vinegar!