199 c 通过函数名字符串调用函数
来源:互联网 发布:足球阵容设计软件 编辑:程序博客网 时间:2024/06/05 05:58
通过函数名字符串调用函数
今天写c的作业时候想起来能不能用函数名字符串来调用函数
一、函数指针
第一个问题,函数名如何保存,我们需要用到函数指针
声明
type (*func)(type &,type &)
该语句声明了一个指针func,它指向了一个函数,这个函数带有了2个type型参数并返回一个type的值。
p.s. type类型可以被看成是int啊或者是floast等C++的类型。
注意事项
一个指向函数的指针必须确保该函数被定义且分配了内存,否则它将指向一个空地址,这个可是大忌!
特别注意第一个括号的位置。如果我们不写括号,如下:
type *func(type ,type)
这就不是一个指向函数的指针了,而是声明了一个函数,该函数返回一个type类型的指针
小栗子
func1() { printf("this is func1!\n"); } void main() { void (*funcP)(); funcP = &func1; (*funcP)(); }
二、字符串调用函数
#include <stdio.h>//没有会报错#include <string.h>//自定义了一个函数指针类型 ,指向的函数参数是void而且返回值也是void//注意 不是取void的别名typedef void (*funcP)();void func1(){ printf("this is func1!\n");}void func2(){ printf("this is func2!\n");}funcP getFuncPointer(char* sfuncname){ if(strcmp(sfuncname,"func1")==0){ //取函数地址 return &func1; }else if(strcmp(sfuncname,"func2")==0){ return &func2; } return NULL;}void main(){ char c[20] = "\0"; funcP funcp = NULL; printf("please input func name:"); //字符数组 c是 char* 类型 scanf("%s",c); //input func1 or func2 funcp = getFuncPointer(c); if(funcp!=NULL){ //取函数指针的值并用()调用 (*funcp)(); }}
0 0
- 199 c 通过函数名字符串调用函数
- 通过函数名字符串调用函数【C语言版】
- [Python]通过函数名字符串调用函数
- [Python]通过函数名字符串调用函数
- 通过函数名调用函数
- js中通过函数名字符串调用函数
- 通过函数名的字符串来调用这个函数
- C语言如果通过函数名调用函数?
- python3 函数调用(通过函数名)
- [C]通过函数指针得到函数名
- JavaScript 通过字符串参数(函数名),调用对应的函数
- 通过模块名和函数名,调用函数
- [C++]C++ 函数指针 实现 函数名字符串 到 函数调用 cmath.h
- PHP通过字符串调用函数
- js 通过变量名调用函数
- 根据类名和函数名字符串调用相关函数
- C 通过函数返回字符串
- 通过函数名调用类的成员函数
- Windows::Rtl::ObjAttrFromName
- Intent属性详解一 component属性
- spring-boot+mybatis开发实战:如何在spring-boot中使用myabtis持久层框架
- js误区:方法变成字符串了??
- 快速排序Java实现
- 199 c 通过函数名字符串调用函数
- 命令模式
- unity3d--杂记
- MySQL 触发器简单实例
- 红黑树的实现小结
- Android基本控件——Toast
- 四种常用的函数调用惯例
- POJ题目分类
- Android4种网络连接方式HttpClient、HttpURLConnection、OKHttp和Volley优缺点和性能对比