博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
结合typedef更为直观的应用函数指针
阅读量:6268 次
发布时间:2019-06-22

本文共 1720 字,大约阅读时间需要 5 分钟。

“函数指针”的本质是一个指针变量,只不过该指针变量指向函数。

1:简单应用

形式1:返回类型(*函数名)(参数表)

  1. #include <stdio.h> 
  2.  
  3. char* (*test)(char *);//定义一个函数指针,使用之前对其赋值 
  4. char* fun(char *ch)//定义一个普通函数 
  5. {  
  6.     return ch; 
  7.  
  8. void main() 
  9.     test = fun;//对函数指针赋值 
  10.     printf("%s\n",test("hello world")); 
#include <stdio.h> char* (*test)(char *);//定义一个函数指针,使用之前对其赋值 char* fun(char *ch)//定义一个普通函数 { return ch; } void main() { test = fun;//对函数指针赋值 printf("%s\n",test("hello world")); }
2:结合typedef 应用函数指针

形式2:typedef 返回类型(*函数名)(参数表)

  1. #include <stdio.h> 
  2.  
  3. typedef char* (*TEST)(char *);//使用typedef定义一个函数指针类型 
  4. TEST test;//定义函数指针 
  5.  
  6. char* fun(char *ch)//定义一个普通函数 
  7. {  
  8.     return ch; 
  9.  
  10. void main() 
  11.     test = fun;//对函数指针赋值 
  12.     printf("%s\n",test("hello world")); 
#include <stdio.h> typedef char* (*TEST)(char *);//使用typedef定义一个函数指针类型 TEST test;//定义函数指针 char* fun(char *ch)//定义一个普通函数 { return ch; } void main() { test = fun;//对函数指针赋值 printf("%s\n",test("hello world")); }
typedef的功能是定义新的类型。

第一句就是定义了一种TEST类型的函数指针。该函数返回类型为char * ,参数类型为char * 。在下面的代码中可以像int,char一样使用TEST类型了。

第二句利用TEST类型定义来一个变量test。可以像平常一样使用了。

相比第一种方法,此方法较直观

3:结合typedef 应用函数指针数组

形式3:typedef 返回类型(*函数名[ ])(参数表)

  1. #include <stdio.h> 
  2.  
  3. char* fun1(char *ch)//定义一个普通函数 
  4. {  
  5.     return ch; 
  6.  
  7. char* fun2(char *ch)//定义一个普通函数 
  8. {  
  9.     return ch; 
  10.  
  11.  
  12. void main() 
  13.     typedef char* (*TEST[2])(char *);//使用typedef定义一个函数指针类型 
  14.     TEST test = {fun1,fun2}; 
  15.  
  16.     printf("1:%s\n 2:%s \n",test[0]("call fun1"),test[0]("call fun2") ); 
#include <stdio.h> char* fun1(char *ch)//定义一个普通函数 { return ch; } char* fun2(char *ch)//定义一个普通函数 { return ch; } void main() { typedef char* (*TEST[2])(char *);//使用typedef定义一个函数指针类型 TEST test = {fun1,fun2}; printf("1:%s\n 2:%s \n",test[0]("call fun1"),test[0]("call fun2") ); }
相比第一种方法,此方法更为直观

转载于:https://www.cnblogs.com/wulei-blog/archive/2011/12/18/3070089.html

你可能感兴趣的文章
numpy opencv matlab eigen SVD结果对比
查看>>
WPF获取某控件的位置,也就是偏移量
查看>>
Boost C++ 库 中文教程(全)
查看>>
solr查询优化(实践了一下效果比较明显)
查看>>
jdk目录详解及其使用方法
查看>>
说说自己对RESTful API的理解s
查看>>
通过layout实现可拖拽自动排序的UICollectionView
查看>>
服务器错误码
查看>>
javascript中的面向对象
查看>>
Splunk作为日志分析平台与Ossec进行联动
查看>>
yaffs文件系统
查看>>
Mysql存储过程
查看>>
NC营改增
查看>>
Lua
查看>>
Mysql备份系列(3)--innobackupex备份mysql大数据(全量+增量)操作记录
查看>>
postgresql 获取刚刚插入的数据主键id
查看>>
C# Activex开发、打包、签名、发布 C# Activex开发、打包、签名、发布 [转]
查看>>
05-Vue入门系列之Vue实例详解与生命周期
查看>>
验证码展示
查看>>
浅谈大型web系统架构
查看>>