linux c函数指针的应用
头文件:1.h
#include<stdio.h> int nul_func();
int test1(int a,int b);
int test2(int a,int b,int c);
int test3(int a,int b,int c,int d);
int GetFunc(char *p,int (**pfunc)()); struct test
{
char *pName;
int (*pFunc)();
}fun[] = { {"test1",test1},
{"test2",test2},
{"test3",test3},
{"nul_func",nul_func} };
函数实现:15.c
#include "1.h"
#include <string.h> int GetFunc(char *p,int (**pfunc)())
{
int i=; while( memcmp(fun[i].pName,"nul_func",) != )
{
if( memcmp(p,fun[i].pName,strlen(fun[i].pName)) == )
{
*pfunc = fun[i].pFunc;
return ;
}
i++;
} printf("%s\n","No Such Func.");
return ;
} int test1(int a, int b)
{
printf("a = %d, b = %d\n",a,b);
return ;
} int test2(int a, int b, int c)
{
printf("a = %d, b = %d , c = %d\n",a,b,c);
return ;
} int test3(int a, int b,int c,int d)
{
printf("a = %d, b = %d, c = %d, d = %d\n",a,b,c,d);
return ;
} int nul_func()
{
printf("%s\n","No Such Func");
return ;
}
主函数:14.c
#include<stdio.h> int main()
{
int i;
int (*pFunc)();
char caName[] = ""; memcpy(caName,"test1",);
i = GetFunc(caName,&pFunc);
printf("%s\n",caName);
i = (*pFunc)(,); memcpy(caName,"test2",);
i = GetFunc(caName,&pFunc);
printf("%s\n",caName);
i = (*pFunc)(,,); memcpy(caName,"test3",);
i = GetFunc(caName,&pFunc);
printf("%s\n",caName);
i = (*pFunc)(,,,); return ;
}
编译:gcc 14.c 15.c -o test
结果:./test
linux c函数指针的应用的更多相关文章
- typedef 函数指针 数组 std::function
1.整型指针 typedef int* PINT;或typedef int *PINT; 2.结构体 typedef struct { double data;}DATA, *PDATA; //D ...
- C++ 指向成员函数指针问题
成员函数指针与常规指针不同,一个指向成员变量的指针并不指向一个内存位置.通常最清晰的做法是将指向数据成员的指针看作为一个偏移量. class ru_m { public: typedef int (r ...
- C基础--函数指针的使用
之前在看代码的时候,看了函数指针的使用,大体分为如下几类: 做一个function list,通过指针索引调用,使得处理功能类似的函数看起来更加清晰: 函数指针作为另一个函数的参数,用作回调: lin ...
- 函数指针玩得不熟,就不要自称为C语言高手(函数指针是解耦对象关系的最佳利器,还有signal)
记得刚开始工作时,一位高手告诉我说,longjmp和setjmp玩得不熟,就不要自称为C语言高手.当时我半信半疑,为了让自己向高手方向迈进,还是花了一点时间去学习longjmp和setjmp的用法.后 ...
- C返回函数指针的函数
如下函数 char (*retCharWithInt(char, char))(int); 申明了函数指针retCharWithInt,该指针指向一个形参是(char,char),返回值是char(* ...
- Day8 函数指针做函数参数
课堂笔记 课程回顾 多态 virtual关键字 纯虚函数 virtual func() = 0; 提前布局vptr指针 面向接口编程 延迟绑定 多态的析构函数的虚函数. ...
- linux select函数详解
linux select函数详解 在Linux中,我们可以使用select函数实现I/O端口的复用,传递给 select函数的参数会告诉内核: •我们所关心的文件描述符 •对每个描述符,我们所关心的状 ...
- linux系统调用函数---12
Linux应用编程学习笔记 周学伟 一.系统调用文件编程 1.文件打开函数 /*************************** ...
- 成员函数指针与高效C++委托 (delegate)
下载实例源代码 - 18.5 Kb 下载开发包库文件 - 18.6 Kb 概要 很遗憾, C++ 标准中没能提供面向对象的函数指针. 面向对象的函数指针也被称为闭包(closures) 或委托(del ...
随机推荐
- Microsoft Edge 浏览器远程代码执行漏洞POC及细节(CVE-2017-8641)
2017年8月8日,CVE官网公布了CVE-2017-8641,在其网上的描述为: 意思是说,黑客可以通过在网页中嵌入恶意构造的javascript代码,使得微软的浏览器(如Edege),在打开这个网 ...
- 设计模式原则(2)--Liskov Substitution Principle(LSP)--里氏替换原则
1.定义: 所有引用基类(父类)的地方必须能透明地使用其子类的对象.这一原则与继承紧密相关.如果对每一个类型为 T1的对象 o1,都有类型为 T2 的对象o2,使得以 T1定义的所有程序 P 在所有的 ...
- 接口测试之soapUI(WebService)
一.WebService介绍 WebService是一种跨编程语言和跨操作系统平台的远程调用技术,XML+XSD,SOAP和WSDL就是构成WebService平台的三大技术. 1)XML+X ...
- Eclipse 安装插件(aptana、svn 、git、Java EE、JSHint)
转发9 1.安装 aptana 插件: * 依次点击:Help -> Install New Software... -> Add * 输入:http://download.aptan ...
- python web入门程序
python2.x web入门程序 #!/usr/bin/python # -*- coding: UTF-8 -*- # 只在python2.x 有效 import os #Python的标准库中的 ...
- Java面向对象的理解
Java是一门面向对象的编程语言(Object Oriented Programming,OOP), 这个句话是每个学习Java的程序员应该先深刻理解的一句话. 我们之所以将自自然界分解,组织成各种概 ...
- multisim&proteus&protel比较
Multisim有超强板级的模拟/数字电路板的设计工作.它包含了电路原理图的图形输入.电路硬件描述语言输入方式,具有丰富的仿真分析能力.高版本可 以进行单片机等MCU的仿真.Multisim有实际元器 ...
- 九天学会Java,第四天,循环结构
变量和数据类型,赋值和输出 算术运算 选择结构 循环结构 函数定义,函数调用 变量作用域 栈,程序运行的基石 面向对象 异常处理 语言提供的公用包 这次我们讲Java的循环结构.循环结构在编程中广泛使 ...
- HTML图像
HTML 图像- 图像标签( <img>)和源属性(Src) 在 HTML 中,图像由<img> 标签定义. <img> 是空标签,意思是说,它只包含属性,并且没有 ...
- webstom破解
链接:http://pan.baidu.com/s/1dFOpj1n 密码:rsfs