函数指针用法
来源:互联网 发布:软件测试的目标 编辑:程序博客网 时间:2024/06/13 05:30
函数指针是指向函数的指针变量,即本质是一个指针变量。
int (*f) (int x); /*声明一个函数指针 */
f=func; /*将func函数的首地址赋给指针f */
指向函数的指针包含了函数的地址,可以通过它来调用函数。声明格式如下:
类型说明符 (*函数名)(参数)
其实这里不能称为函数名,应该叫做指针的变量名。这个特殊的指针指向一个返回整型值的函数。指针的声明笔削和它指向函数的声明保持一致。
例如:
typedef void (* PROCESS_CMD_T)(char * cmd, int cmdNameLen, char * data, int dataLen, char * ack, int * ackLen);
static PROCESS_CMD_T processCmdVector[5] =
{
Process_Entrysystem,
Process_StartLocalTrial,
Process_RestTrial,
Process_StopTrial,
Process_ExitSystem,
};
void Process_Entrysystem(char * cmd, int cmdNameLen, char * data, int dataLen, char * ack, int * ackLen);
void Process_StartLocalTrial(char * cmd, int cmdNameLen, char * data, int dataLen, char * ack, int * pAckLen);
void Process_RestTrial(char * cmd, int cmdNameLen, char * data, int dataLen, char * ack, int * pAckLen);
void Process_StopTrial(char * cmd, int cmdNameLen, char * data, int dataLen, char * ack, int * pAckLen);
void Process_ExitSystem(char * cmd, int cmdNameLen, char * data, int dataLen, char * ack, int * pAckLen);
processCmdVector[0](cmd,cmdNameLen,data,dataLen,ack,ackLen);
processCmdVector[1](cmd,cmdNameLen,data,dataLen,ack,ackLen);
processCmdVector[2](cmd,cmdNameLen,data,dataLen,ack,ackLen);
processCmdVector[3](cmd,cmdNameLen,data,dataLen,ack,ackLen);
processCmdVector[4](cmd,cmdNameLen,data,dataLen,ack,ackLen);
回调的时候:
typedef void (*printf)(int);
void printfwelcome(int len){
printf("welcome------%d\n",len);
}
void main(){
printf m_printf = (printf) printfwelcome;
(*m_printf)(10);
}
运行结果 :"welcome------10
- 函数指针的用法
- 函数指针的用法
- 函数指针的用法
- 函数指针的用法
- 函数指针用法
- 函数指针 用法
- typedef函数指针用法
- 函数指针用法说明
- 函数指针的用法
- typedef函数指针用法
- 函数指针的用法
- typedef函数指针用法
- 函数指针的用法
- c++指针函数用法
- typedef函数指针用法
- typedef函数指针用法
- typedef函数指针用法
- typedef函数指针用法
- Python学习手册 - 06
- Linux gdb调试及后台程序问题
- 使用GDB调试GO<一>
- JSP中的编码问题-解决页面乱码
- Android微信右上角弹出的对话选择框实现
- 函数指针用法
- android studio系列之获取数字签名
- 视频播放相关
- event.button在火狐和IE下的不同
- 全球顶级专家为你解读:什么是真正的 DevOps?
- HTTPS那些事(一)HTTPS原理
- Android jar包里面有assets目录下有文件,APP的assets里面也有文件,如何读呢?
- qt5.3.1+opencv2.4.9编译环境的搭建
- 手机端页面需要用rem设置字体大小的js代码