199 c 通过函数名字符串调用函数
2016-09-20 22:30
316 查看
通过函数名字符串调用函数
今天写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)(); } }
相关文章推荐
- 从源码安装Mysql/Percona 5.5
- 如何组织构建多文件 C 语言程序(二)
- 关于指针的一些事情
- 如何写好 C main 函数
- Lua和C语言的交互详解
- 浅析Ruby的源代码布局及其编程风格
- C# Pointer指针应用实例简述
- 关于C语言中参数的传值问题
- 简要对比C语言中三个用于退出进程的函数
- 深入C++中API的问题详解
- 基于C语言string函数的详解
- C和指针小结(推荐)
- C语言中fchdir()函数和rewinddir()函数的使用详解
- 浅谈C语言转义字符和格式控制符
- C语言内存对齐实例详解
- C语言编程中统计输入的行数以及单词个数的方法
- C 语言简单加减乘除运算
- C语言自动生成enum值和名字映射代码
- C语言练习题:自由落体的小球简单实例
- 使用C语言判断英文字符大小写的方法