一、typedef 定义函数指针类型及用法
typedef可以用于定义函数指针类型:
【语法】typedef 返回类型 (*函数类型名)(参数表)typedef 返回类型 (类名::*函数类型名)(参数表)
【用途】1、可以用来定义该函数类型的函数指针,就不用每次使用函数指针都要写一次函数原型了;2、有了类型名,就可以使用在容器里面,譬如mapint, 类型名,用于实现灵活的函数调用。
【示例】
例1:typedef void (*PF)(int x);
void func1(int x){ coutfunc1:xendl;}
void func2(int x){ coutfunc2:xendl;}
void main(){ PF?pFunc; //声明一个函数指针只需要用PF类型名 pFunc = func1; //此处也可以使用pFunc = func1; pFunc(38); pFunc = func2; pFunc(99);}
-----------------------------------------------------------------------------------------------
例2:class CUtil{public: CUtil(); typedef void (CUtil::*pUFunc)(int); //定义原型为void CUtil::func(int)的函数指针的别名为pUFunc mapint,?pUFunc funcMap; //可以用做map容器的元素类型 void laner(int x); void execute();};
CUtil::CUtil(){ funcMap[0] = CUtil::laner; //这里初始化map容器,关联数字0和函数laner}
void CUtil::laner(int x){ coutlaner:xendl;}
void CUtil::execute(){ (this-*funcMap[0])(38); //调用map[0]关联的函数 //注意1:这里必须使用this-,否则会有error C2171: “*”: “void (__thiscall CUtil::* )(int)”类型的操作 数非法的错误 //注意2:这里必须使用*解引用,才能实现函数调用,否则会有error C2064: 项不会计算为接受 1 个参数的函数的错误}
void main(){ CUtil pUtil = new CUtil(); pUtil-execute(); (pUtil-*(pUtil-funcMap[0]))(38); //与上一句等效,注意括号要用正确}
二、C++ static关键字
C++的static有两种用法:面向过程程序设计中的static和面向对象程序设计中的static。前者应用于普通变量和函数,不涉及类;后者主要说明static在类中的作用。1.面向过程设计中的static1.1静态全局变量在全局变量前,加上关键字static,该变量就被定义成为一个静态全局变量。我们先举一个静态全局变量的例子,如下:?//Example 1#include iostream.hvoid fn();static int n; //定义静态全局变量void main(){? n=20;? coutnendl;? fn();}
void fn(){ ?n++;? coutnendl;}静态全局变量有以下特点:???该变量在全局数据区分配内存;???未经初始化的静态全局变量会被程序自动初始化为0(自动变量的值是随机的,除非它被显式初始化);???静态全局变量在声明它的整个文件都是可见的,而在文件之外是不可见的;
静态变量都在全局数据区分配内存,包括后面将要提到的静态局部变量。对于一个完整的程序,在内存中的分布情况如下图: ?全局数据区堆区栈区一般程序的由new产生的动态数据存放在堆区,函数内部的自动变量存放在栈区。自动变量一般会随着函数的退出而释放空间,静态数据(即使是函数内部的静态局部变量)也存放在全局数据区。全局数据区的数据并不会因为函数的退出而释放空间。细心的读者可能会发现,Example 1中的代码中将 “static int n; //定义静态全局变量”改为“int n; //定义全局变量”。程序照样正常运行。的确,定义全局变量就可以实现变量在文件中的共享,但定义静态全局变量还有以下好处:???静态全局变量不能被其它文件所用;?
您可能关注的文档
- “中国统计数据应用支持系统”介绍.doc
- “全国一张图”工程统一时点变化信息提取操作指南.doc
- 《IATF16949质量管理体系五大工具版一本通》第2版附录版.doc
- 《传感器测试技术》实验指导书201503.doc
- 《传感器与检测技术胡向东-第2版》习题解答.doc
- 《机电一体化系统》网考资料201712.doc
- 《机关团体企事业单位管理卷》表格样本.doc
- 《计算机导论》掌握的要点教案.doc
- 《计算机应用基础》教案-吴刚.doc
- 《建筑构造与识图》课程设计任务书建管16级苏廷志》.doc
- 伟明环保-市场前景及投资研究报告-境内业务稳健运行,印尼市场贡献边际增量.pdf
- 桂东县法院系统招聘考试真题2025.pdf
- 贵州省黔南布依族2026年中考三模物理试题及答案.pdf
- 贵州省黔南州2026年中考语文二模试卷附答案.pdf
- 贵州省铜仁市2026年中考语文二模试卷附答案.pdf
- 2026上半年安徽事业单位联考合肥市庐江县招聘36人备考题库及一套完整答案详解.docx
- 贵州省毕节市2026年中考语文一模试卷附答案.pdf
- 贵州省贵阳市南明区2026年中考语文一模试卷附答案.pdf
- 2026上半年安徽事业单位联考合肥市庐江县招聘36人备考题库及一套参考答案详解.docx
- 贵州省贵阳市白云区2026年中考二模物理试题附答案.pdf
原创力文档

文档评论(0)