【c++程序】函数指针

#include<iostream>
#include<string>
using namespace std;
float (*fp)(float&,float&);
void (*p)(float &,float &);
float triangle(float &x,float &y)
{
	return x*y*0.5;
}
float rectangle(float &x,float &y)
{
	return x*y;
}
void Swap(float &x,float &y)
{
	float n;
	n=x;
	x=y;
	y=n;
}
void print(float &x,float &y)
{
	cout<<"长"<<x<<"宽"<<y<<endl;
}
bool check(string str)
{
	for(int i=0;i<str.length();i++)
	{
		if((str[i]>'9'||str[i])<'0'&&(str[i]!='.'))//检测是否输入数字
			return false;
	}
	return true;
}
void get(float &x,float &y)
{
	cout<<"请输入x的新值";
	string str1;
	cin>>str1;
	while(!check(str1))
	{
		cout<<"输入的不是数字,请重新输入"<<endl;
		cin>>str1;
	}
	x=atof(str1.c_str());
	cout<<"请输入y的新值";
	string str2;
	cin>>str2;
	while(!check(str2))
	{
		cout<<"输入的不是数字,请重新输入"<<endl;
		cin>>str2;
	}
	x=atof(str2.c_str());
}
int main()
{
	bool quit=false;
	float a=2,b=3;
	int choice;
	while(quit==false)
	{
		cout<<"0-退出1-设定长和宽2-三角形3-长方形4-交换长和宽";
		cin>>choice;
		switch(choice)
		{
		case 1:cout<<"设定前长和宽的值";
			/*print(a,b);
			get(a,b);
			cout<<"设定后长和宽的值";
			print(a,b);*/
			p=get;
			break;
		case 2://print(a,b);
			cout<<"三角形的面积为";
				//<<triangle(a,b)<<endl;
			fp=triangle;
			break;
		case 3://print(a,b);
			cout<<"长方形的面积为";
				//<<rectangle(a,b)<<endl;
			fp=rectangle;
			break;;
		case 4:cout<<"交换前长和宽的值";
			/*print(a,b);
			swap(a,b);
			cout<<"设定后长和宽的值";
			print(a,b);*/
			p=Swap;
			break;
		default:
			quit=true;
			break;
		}
		if(choice==1||choice==4)
		{
			print(a,b);
			p(a,b);
			print(a,b);
		}
		else if(choice==2||choice==3)
		{
			print(a,b);
			cout<<"面积为"<<fp(a,b)<<endl;
		}
	}
}

时间: 2024-11-08 21:30:20

【c++程序】函数指针的相关文章

活生生的例子:qInstallMessageHandler接受指定类型的函数指针,这样就可以锁心所欲的让程序员自定义

理论:qInstallMessageHandler是被定义在全局空间里: http://doc.qt.io/qt-5/qtglobal.html#QtMessageHandler-typedef 实践: http://blog.csdn.net/liang19890820/article/details/51838379 void myMessageOutput(QtMsgType type, const QMessageLogContext &context, const QString &am

黑马程序员-----指针函数和函数指针

------<a href="http://www.itheima.com" target="blank">Java培训.Android培训.iOS培训..Net培训</a>.期待与您交流! ----- 第一讲 指针函数 一.指针函数的概念 所谓函数类型是指函数返回值的类型,在c语言中允许一个函数的返回值是一个指针(地址),这种返回指针的函数称为指针型函数. 二.指针函数的定义 定义指针型函数的一般形式为: int  *sum(int a,i

Java程序员学习C++之函数指针

函数指针的定义: 头文件:function.h //该头文件定义了接口,在实际的源文件中定义了模板方法 //后续的调用类只需要实现覆盖before,process,after方法即可实现模板方法的回调 /* extern可置于变量或者函数前,以表示变量或者函数的定义在别的文件中, 提示编译器遇到此变量或函数时,在其它模块中寻找其定义. */ extern void(*before)(); extern void(*process)(int,int); extern void(*after)();

单继承与多继承中的虚函数表和虚函数指针

首先,我们了解一下何为单继承,何为多继承?? 单继承:一个子类只有一个直接父类. 多继承:一个子类有两个或多个直接父类. 单继承中的虚函数表分析: 示例程序: #include <iostream> using namespace std; typedef void(*FUNC)(); class Base { public: virtual void func1() { cout << "Base::func1()" << endl; } virt

C语言函数、函数指针解析

函数.函数指针的理解: 函数的定义: void myfunc(void) { } 函数的声明 void myfunc(void); 函数指针的定义.初始化.赋值: 定义:void (*funcp)(void); 初始化: void (*funcp)(void) = &myfunc; 赋值 void (*funcp)(void); funcp = &myfunc; 函数调用:(*funcp)(); funcp(); 也可以这样赋值:void (*funcp)(void); funcp = m

【转】 指针函数与函数指针的区别

一. 在学习arm过程中发现这“指针函数”与“函数指针”容易搞错,所以今天,我自己想一次把它搞清楚,找了一些资料,首先它们之间的定义: 1.指针函数是指带指针的函数,即本质是一个函数.函数返回类型是某一类型的指针 类型标识符    *函数名(参数表) int *f(x,y); 首先它是一个函数,只不过这个函数的返回值是一个地址值.函数返回值必须用同类型的指针变量来接受,也就是说,指针函数一定有函数返回值,而且,在主调函数中,函数返回值必须赋给同类型的指针变量. 表示: float *fun();

函数指针与回调函数

一.函数指针 1.  函数指针就是一个指针变量,用来指向函数地址.正在运行的程序(进程)在内存中占据一定的空间.进程包括编译好的程序代码和需要使用的变量.因此,程序代码中的函数就是一些字符域,要得到一个函数地址,也就是得到这些字符域的起始地址. 2. 函数指针的三种形式:    指向普通C函数的函数指针 --- C语言中的函数指针    指向C++类静态成员函数的函数指针 --- C++    指向C++类非静态成员函数的函数指针 --- C++ 函数指针的本质自然也就是函数地址.  类成员函数

【C/C++学院】0726-cppIDE/一级指针/指针数组/函数指针/函数指针数组/二级指针

[送给在路上的程序员] 对于一个开发者而言,能够胜任系统中任意一个模块的开发是其核心价值的体现. 对于一个架构师而言,掌握各种语言的优势并可以运用到系统中,由此简化系统的开发,是其架构生涯的第一步. 对于一个开发团队而言,能在短期内开发出用户满意的软件系统是起核心竞争力的体现. 每一个程序员都不能固步自封,要多接触新的行业,新的技术领域,突破自我. cppIDE 使用mfc和codeblocks中的mingw编译器.执行system命令中的bat批处理脚本. 一级指针 指针,结构体struct,

函数指针和回调函数

函数指针 函数指针是指向函数调用地址的指针.它和函数名究竟有什么关系呢?且看下文. 且看一小程序 首先,先请看下边程序: 1 #include <iostream> 2 #include <string> 3 using namespace std; 4 5 void func(string s) 6 { 7 cout << s << endl; 8 } 9 10 void (*pFunc)(string s); // 不能够写成 void *pFunc(s

深入理解 [指针函数] 、[函数指针]、[指针的指针]、[指向指针数组的指针]

指针函数 1.指针函数是指带指针的函数,即本质是一个函数.当一个函数声明其返回值为一个指针时,实际上就是返回一个地址给调用函数,以用于需要指针或地址的表达式中. 函数返回类型是某一类型的指针: 格式: 类型标识符  *函数名(参数表) int *match(void *key_x,void *key_y); 解析:首先来说它是一个函数,只不过这个函数的返回值是一个地址值.函数返回值必须用同类型的指针变量来接受,也就是说,指针函数一定有函数返回值,而且,在主调函数中,函数返回值必须赋给同类型的指针