【思考】函数指针与指针函数

2019-07-12 23:05发布

[函数指针] 在学习嵌入式Linux的时候遇到一个函数
  1. #include
  2. //用于创建线程 
  3. int pthread_create(pthread_t *tidp, const pthread_attr_t *attr, void *(*start_rtn)(void), void *arg) 
  参数说明: tidp:  线程id attr;  线程属性(通常为空) start_rtn:  线程要执行的函数  arg:  start_rtn的参数  参数3便是一个函数指针,指向函数的指针 函数指针:指向拥有相同参数列表和返回值的一组函数。 For example: 现有三个函数如下:
  1. void i(void)    {printf("I");} 
  2. void love(void) {printf("love");} 
  3. void you(void)  {printf("you");} 
这样就可以构建一个通用函数
  1. void (*talk)(void); 
调用方法如下:
  1. void talktou(int id) 
  2.     talk keyArray[3] = {&i, &love, &you}; 
  3.     talk = word[id]; 
  4.     (*talk)(); 
这样的话就可以直接调用talktou(0/1/2)从而实现不同字符串的输出了。PS:用于处理参数和返回值类型分别都一样,但是功能不确定的函数,可以使用函数指针。再比如算数运算的例子,加减乘除,都可以用typedef int (*calc)(int, int)代表...
[指针函数]一个函数不仅可以带回一个整型数据的值,字符类型值和实型类型的值,还可以带回指针类型的数据,使其指向某个地址单元。
相关参考文章: http://lionwq.spaces.eepw.com.cn/articles/article/item/18258