C++使用简单的函数指针

函数指针:

被调用函数指针必须包括函数的存储器地址,为了正常工作,指针还必须包括其它信息,这一参数列表指针的参数类型和返回类型的函数。

因此,当你声明一个函数指针,数的參数类型和返回类型。以及指针名。

函数指针的一般形式例如以下:

返回类型(*指针明名)(參数类型列表);

注意:指针名上的括号是不可缺少的。否则*就会与返回类型结合,就成了一个函数原型了。

演示样例:

#include <iostream>
using std::cout;
using std::endl;
//函数声明
long sum(long a,long b);
long product(long a,long b);
int main(int argc,char* argv[]){
	//函数指针声明
	long (*pfun)(long ,long)=0;
	//指向product函数
	pfun=product;
	cout<<endl<<"4*6="<<pfun(4,6);

	//指向sum函数
	pfun=sum;
	cout<<endl<<"4+6="<<pfun(4,6)<<endl;
	return 0;
}
long product(long a,long b){
	return a*b;
}
long sum(long a,long b){
	return a+b;
}

版权声明:本文博客原创文章,博客,未经同意,不得转载。

时间: 2024-10-11 05:05:35

C++使用简单的函数指针的相关文章

一个简单的函数指针测试例子

一般函数指针的一个简单测试.将函数放到vector里面,将函数作为形参. 1 typedef void(*GTestFunPtr)(int, int); 2 3 void test1(int a, int b) 4 { 5 std::cout << "test1:" << a + b << std::endl; 6 } 7 8 void test2(int a, int b) 9 { 10 std::cout << "test2

typedef函数指针使用方法

1.简单的函数指针的应用 形式1:返回类型(*函数名)(參数表) char (*pFun)(int); char glFun(int a){ return;} void main() { pFun = glFun; (*pFun)(2); } 第一行定义了一个指针变量pFun.首先我们依据前面提到的"形式1"认识到它是一个指向某种函数的指针,这样的函数參数是一个int型,返回值是char类型.仅仅有第一句我们还无法使用这个指针,由于我们还未对它进行赋值. 第二行定义了一个函数glFun

C++函数指针详解

学习c++的过程中,指针是难点,熟悉了指针之后,还有一个让人很蛋疼的难点,那就是函数指针了.本博文详细介绍一下常见的各种坑爹的函数指针. 至于指针的详细学习,推荐这篇博文C++指针详解 与数据一样,函数也有地址,函数的地址就是内存中存放函数语言代码的起始地址.函数指针就是指向这个地址.函数指针所指向的类型,就是函数本身.我们知道,指针所指向类型代表了指针所指向的内存区域的大小.所以函数指针所指向的类型,就是函数在内存中所占据内存的大小.知道了函数的起始地址和大小,所以函数指针可以很轻易的代替函数

函数指针定义

void func(string str){return;} 1.简单的函数指针的应用.//形式1:返回类型(*函数名)(参数表)void(*pFunc)(string); 用法:pFunc = func; (*pFunc)("str"); 2.使用typedef更直观更方便.//形式2:typedef 返回类型(*新类型)(参数表)typedef void(*pFunc)(string); 用法:pFunc pfunc; pfunc = func; (*pFunc)("st

关于C++中函数指针的使用

关于C++中函数指针的使用(包含对typedef用法的讨论) (一)简单的函数指针的应用. //形式1:返回类型(*函数名)(参数表) char (*pFun)(int); char glFun(int a){ return;} void main() { pFun = glFun; (*pFun)(2); } 第一行定义了一个指针变量pFun.首先我们根据前面提到的“形式1”认识到它是一个指向某种函数的指针, 这种函数参数是一个int型,返回值是char类型.只有第一句我们还无法使用这个指针,

函数指针的应用

#include <iostream> #include <string> using namespace std; void print() { cout << "hello world" << endl; } int max(int num1,int num2) { return num1>num2?num1:num2; } //(二)使用typedef更直观更方便. //形式2:typedef 返回类型(*新类型)(参数表)

转:函数指针数组的妙用(I)

转自:http://blog.sina.com.cn/s/blog_4c78b35f010008hi.html 笔者在开发某软件过程中遇到这样一个问题,前级模块传给我二进制数据,输入参数为 char* buffer 和 int length,buffer是数据的首地址,length表示这批数据的长度.数据的特点是:长度不定,类型不定,由第一个字节(buffer[0])标识该数据的类型,共有256(2的8次方)种可能性.我的任务是必须对每一种可能出现的数据类型都要作处理,并且我的模块包含若干个函数

成员函数指针与高性能的C++委托

成员函数指针与高性能的C++委托(上篇) 撰文:Don Clugston 引子 标准C++中没有真正的面向对象的函数指针.这一点对C++来说是不幸的,因为面向对象的指针(也叫做"闭包(closure)"或"委托 (delegate)")在一些语言中已经证明了它宝贵的价值.在Delphi (Object Pascal)中,面向对象的函数指针是Borland可视化组建库(VCL,Visual Component Library)的基础.而在目前,C#使"委托&

c语言函数指针的理解与使用

转载:http://www.cnblogs.com/haore147/p/3647262.html 1.函数指针的定义 顾名思义,函数指针就是函数的指针.它是一个指针,指向一个函数.看例子: A) char * (*fun1)(char * p1,char * p2); B) char * *fun2(char * p1,char * p2); C) char * fun3(char * p1,char * p2); 看看上面三个表达式分别是什么意思? C)这很容易,fun3是函数名,p1,p2