洗衣房用水量:typedef和指向函数的指针(好文)(1读)
来源:百度文库 编辑:偶看新闻 时间:2024/05/08 07:00:00
typedef和指向函数的指针(好文)(1读)
2007-04-20 16:44 571人阅读 评论(1) 收藏 举报 在typedef的使用中,最麻烦的是指向函数的指针,如果没有下面的函数,你知道下面这个表达式的定义以及如何使用它吗? int (*s_calc_func(char op))(int, int); 如果不知道,请看下面的程序,里面有比较详细的说明 // 定义四个函数int add(int, int);int sub(int, int);int mul(int, int);int div(int, int);// 定义指向这类函数的指针typedef int (*FP_CALC)(int, int); // 我先不介绍,大家能看懂下一行的内容吗?int (*s_calc_func(char op))(int, int); // 下一行的内容与上一行完全相同,// 定义一个函数calc_func,它根据操作字符 op 返回指向相应的计算函数的指针FP_CALC calc_func(char op); // 根据 op 返回相应的计算结果值int calc(int a, int b, char op); int add(int a, int b){ return a + b;}int sub(int a, int b){ return a - b;}int mul(int a, int b){ return a * b;}int div(int a, int b){ return b? a/b : -1;}// 这个函数的用途与下一个函数作业和调用方式的完全相同,// 参数为op,而不是最后的两个整形int (*s_calc_func(char op)) (int, int){ return calc_func(op);} FP_CALC calc_func(char op){ switch (op) { case '+': return add; case '-': return sub; case '*': return mul; case '/': return div; default: return NULL; } return NULL;} int calc(int a, int b, char op){ FP_CALC fp = calc_func(op); // 下面是类似的直接定义指向函数指针变量 // 下面这行是不用typedef,来实现指向函数的指针的例子,麻烦! int (*s_fp)(int, int) = s_calc_func(op); // ASSERT(fp == s_fp); // 可以断言这俩是相等的 if (fp) return fp(a, b); else return -1;} void test_fun(){ int a = 100, b = 20; printf("calc(%d, %d, %c) = %d/n", a, b, '+', calc(a, b, '+')); printf("calc(%d, %d, %c) = %d/n", a, b, '-', calc(a, b, '-')); printf("calc(%d, %d, %c) = %d/n", a, b, '*', calc(a, b, '*')); printf("calc(%d, %d, %c) = %d/n", a, b, '/', calc(a, b, '/'));} 运行结果 calc(100, 20, +) = 120 calc(100, 20, -) = 80 calc(100, 20, *) = 2000 calc(100, 20, /) = 5作者Blog:http://blog.csdn.net/eion/相关文章如何获取本机所有MAC地址 读者——写者问题 Makefile编写小说(一) typedef使用大全3(指向函数的指针) typedef 使用大全2(结构体)
(C语言)返回指向数组的指针的函数
在java中怎样模拟指针这一操作,还有指向函数的指针?
在Visual FoxPro中,当记录指针指向第一条记录时,RECNO()函数的值为 ,
已知fl( )是类A的公有成员函数,P是指向成员函数fl( )的指针,采用( )是正确的??
什么是指向指针的指针变量
c中函数f返回值为指向x类型变量的指针,定义的时候怎么写?
指向字符串常量的字符指针
罗盘的指针为什么总是指向北方
指针指向字符串后的地址问题?
指向二维数组的指针问题。
怎么改变函数的指向
大哥们你看“常量指针和指向常量的指针”的问题咋搞的呀?晕!
C++函数指针的调用
使用基类指针在MIAN()函数调用和派生类的display()函数
vfp指向当前记录的函数
鼠标指针自动激活指向的窗口怎么取消呢?
鼠标指针自动激活指向的窗口怎么取消呢?
指南针的红色指针指向南还是北
指向二维数组或多维数组的指针重要吗?
如何使派生类的指针指向基类?
问一个关于typedef的问题(语言)
指向对象数组的指针不一定必须指向数组的首元素
关于C语言的,指向指针的指针,需要专业知识,懂的进。
C语言中的指向指针数组的指针**p的具体用法