c语言 第三讲 函数指针和结构体结合调用
2014-07-22 16:35
453 查看
#include <stdio.h>
#include <string.h>
#include "Myfunction.h"
int maxValue(int x,int y)
{
return x > y ? x : y;
}
int minValue(int x,int y)
{
return x < y ? x : y;
}
int sumValue(int x,int y)
{
return x + y;
}
int avgValue(int x,int y)
{
return (x + y) /
2;
}
PFUNC getFunction(constchar *funcName)
//返回函数指针
{
KeyFunc kFuncs[4] = {
{"max",maxValue},
{"min",minValue},
{"sum",sumValue},
{"avg",avgValue}
};
//从数组匹配出的函数指针
PFUNC pFunc =
NULL;
for (int i =0; i <
4; i++) {
if (strcmp(kFuncs[i].funcName, funcName) ==0) {
pf = kFuncs[i];
break;
}
}
return pf;
}
int getValue(int x,int y,
constchar *funcName)
//得到pf的地址,pf指x,y具体所要操作的函数!
{
//通过函数名称字符串得到函数指针
PFUNC pf = getFunction(funcName);
//没有匹配到,返回0,如果pf不为空,直接调用pf(x, y)
int result = 0;
if (pf) {
//pf != null
result = pf(x, y);
}
return result;
}
int main(int argc,const
char * argv[])
{
char funcName[20] = {'\0'};
scanf("%s", funcName);
printf("%s = %d\n", funcName,getValue(3,5,
funcName));
return 0;
}
int maxValue(int x,int y);
int minValue(int x,int y);
int sumValue(int x,int y);
int avgValue(int x,int y);
//typedef int (*)(int, int) PFUNC;
typedef int (*PFUNC)(int,int);
//重定义为 PEUNC = int (*)(int, int)
/// 通过字符串函数名字得到函数指针
PFUNC getFunction(constchar *funcName);
int getValue(int x,int y,
const
char *funcName); //原始int (*pf)(int, int); 即等于PFUNC pf
/// 结构体保存字符串名字和函数指针
typedef struct keyFunc {
char *funcName;
PFUNC pFunc;
} KeyFunc;
#include <string.h>
#include "Myfunction.h"
int maxValue(int x,int y)
{
return x > y ? x : y;
}
int minValue(int x,int y)
{
return x < y ? x : y;
}
int sumValue(int x,int y)
{
return x + y;
}
int avgValue(int x,int y)
{
return (x + y) /
2;
}
PFUNC getFunction(constchar *funcName)
//返回函数指针
{
KeyFunc kFuncs[4] = {
{"max",maxValue},
{"min",minValue},
{"sum",sumValue},
{"avg",avgValue}
};
//从数组匹配出的函数指针
PFUNC pFunc =
NULL;
for (int i =0; i <
4; i++) {
if (strcmp(kFuncs[i].funcName, funcName) ==0) {
pf = kFuncs[i];
break;
}
}
return pf;
}
int getValue(int x,int y,
constchar *funcName)
//得到pf的地址,pf指x,y具体所要操作的函数!
{
//通过函数名称字符串得到函数指针
PFUNC pf = getFunction(funcName);
//没有匹配到,返回0,如果pf不为空,直接调用pf(x, y)
int result = 0;
if (pf) {
//pf != null
result = pf(x, y);
}
return result;
}
int main(int argc,const
char * argv[])
{
char funcName[20] = {'\0'};
scanf("%s", funcName);
printf("%s = %d\n", funcName,getValue(3,5,
funcName));
return 0;
}
int maxValue(int x,int y);
int minValue(int x,int y);
int sumValue(int x,int y);
int avgValue(int x,int y);
//typedef int (*)(int, int) PFUNC;
typedef int (*PFUNC)(int,int);
//重定义为 PEUNC = int (*)(int, int)
/// 通过字符串函数名字得到函数指针
PFUNC getFunction(constchar *funcName);
int getValue(int x,int y,
const
char *funcName); //原始int (*pf)(int, int); 即等于PFUNC pf
/// 结构体保存字符串名字和函数指针
typedef struct keyFunc {
char *funcName;
PFUNC pFunc;
} KeyFunc;
相关文章推荐
- C语言结构体指针在函数调用中的使用
- C语言面试题收集(函数调用、指针等)
- C语言中,将结构体指针传入函数后,内存地址没变,内存数据发生变化
- 12个C语言面试题,涉及指针、进程、运算、结构体、函数、内存,看看你能做出几个!
- 【C语言提高10】【指针铁律】铁律4:应用指针必须和函数调用相结合(指针做函数参数)
- C语言--- 高级指针2(结构体指针,数组作为函数参数)
- 关于C语言中一,二级指针函数中的使用和c语言中和函数发生调用时,实参和形参都会占用内存吗?
- C语言结构体指针,函数指针的用法
- c语言结构体中保存函数指针的用法
- 12个C语言面试题,涉及指针、进程、运算、结构体、函数、内存,看看你能做出几个!
- C语言面试题收集(函数调用、指针等)
- C语言 结构体相关 函数 指针 数组
- C语言关于数组、指针、函数和结构体的其他知识
- 《IOS_C语言》高级指针(结构体指针、结构体数组指针、结构体数组指针,作为函数的参数使用、预编译指令)
- C语言用结构体指针作函数参数
- C语言学习之 通过指向函数的指针 实现函数的调用
- C语言调用函数指针
- 【嵌入式开发】C语言 结构体相关 的 函数 指针 数组
- C语言 指针高级:函数回调之动态调用
- 《IOS_作业C语言》高级指针(结构体指针、结构体数组指针、结构体数组指针,作为函数的参数使用、预编译指令)