`
ding43930053
  • 浏览: 39011 次
社区版块
存档分类
最新评论

VC++学习之路之<函数的指针>

 
阅读更多
在C++中,指针变量可以指向普通变量、字符串和数组等。同时也可以指向函数,因为一个函数在编译时被分配一个入口地址,

这个入口地址即为该函数的指针,所以,可以用指针变量指向函数,然后通过该指针变量调用此函数。

在C++中,函数的名称就代表了该函数的指针。

指向函数的指针变量的一般定义形式为:

数据类型标识符 (*指针变量名)();


//求a和b中的较大者

#include "stdafx.h"
#include <iostream>

using namespace std;

int findMax(int x,int y);

/************************************************************************/
/* void main()
{
int a,b,c;
cin >>a>>b;
c=findMax(a,b);
cout <<c;
}                                                                     */
/************************************************************************/

//如果改用指向函数的指针变量,则main函数为:
void main()
{
	int a,b,c;
	cin >>a>>b;
	int (*p)(int x,int y);
	p = findMax;
	c = (*p)(a,b);
	cout <<c;

}

int findMax(int x,int y)
{
	if(x<y)return y;
	if(x>y)return x;
}


说明:

(1)“int(*p);”说明了一个指向返回值为整型数据的函数的指针,不要写成int *p()。

(2)p=findMax;表示把函数的入口地址赐给指针变量p,那么,*p就是函数findMax,因此,“c=(*)(a,b)” 和“c=findMax(a,b)” 是等价的。

注意:

(1)函数的调用可以通过函数名调用,也可通过函数指针调用。

(2)“int (*p)(int x,int y); 只是表示定义了一个指向函数的指针变量,而不是固定指向哪一个函数,

在程序中把哪一个函数的地址赐给它,它就指向哪一个函数。

(3)在给指向函数的指针变量赐值时,只需给出函数名,而不必给出参数,如p=findMax;

(4)对指向函数的指针变量进行像p+n,p++,p--等算术运算是无意义的。

2.把指向函数的指针变量作为函数参数

指向函数的指针变量常用的用途之一就是把指针作为参数传递到其他函数。函数的参数可以为变量、数组名、指向变量的指针变量以及指向数组的指针变量等,

而现在指向函数的指针变量也可以作为函数参数,以实现函数地址的传递。例如:

sub(int (*x1)(int x),int (*x2)(int y))

{

int a,b;

.................

(*x1)(a);

(*x2)(b);

}

分享到:
评论

相关推荐

    vc++类函数指针的应用

    附件为VC++的源代码包。 描述了如何使用函数名称的字符串来调用函数,需要在VC++7版本以上才能编译通过。 在进行可配置化以及架构设计时可参考

    函数指针的定义与使用

    函数指针的定义与使用,其中包含了函数指针的定义与使用,并且把函数指针也结构体结合起来。程序简单,明了,把函数指针的灵活展示的很清楚,还为VC++中的消息映射的理解作铺垫。

    TestDLL(VC++2010制造和调用DLL)

    TestDLL(VC++2010制造和调用DLL).

    VC++常用的共用函数100多页

    ◆将一个CWnd指针转换成一个控件ID(整数)注意用GetDlgItem()函数是从一个控件ID转换成一个CWnd的指针◆ 28 ◆如果在对话框中自定义一个消息的方法,假设对话框名为CXX◆ 28 ◆消息传递◆ 29 ◆在一个函数引用另外的...

    JNA调用VC++dll

    JNA调用VC++dll;boolean,String,int,loog,结构体指针,VC++通过回调函数调用java函数

    VC++读写文件和注册表的源程序

    VC++读文件、写文件与读注册表、写注册表的简单实例,代码中可展现出const char *与char * const的区别。C语言对文件读写的支持,FILE指针;文本文件和二进制文件的区别。用文本方式读写文件和以二进制方式读写文件...

    郁金香VC++外挂编程全集中级篇2.1.6part02

    在接下来的一段时间将由我和大家一起学习游戏外挂的分析,制作。 课程分四个大章节 初级篇,中级篇,进阶篇,高级篇 初级篇内容:编写一个完整的,简单的外挂 C++的数据类型:Byte,Word,DWORD,int,float API函数的...

    VC++ COM组件开发相关实例

    COM接口 - 是一个包含了一组函数指针 的数据结构,这些函数是由组件实现的 2 C++的接口实现 2.1 C++实现接口的方式,使用抽象类 定义接口. 2.2 基于抽象类,派生出子类并实现 功能. 2.3 使用 interface 定义...

    VC++6.0程序检测可执行程序是32位还是64位

    有时候我们需要知道需要用到的dll文件是否是64位的,我们可以用这个程序检测,用VC++6.0打开程序,修改main函数下int n = CrnGetImageFileMachine("C:\\Program Files\\Daheng Imavision\\DH-USBDevice\\Drivers\\...

    E DLL导出类 VC 导出类 Use

    本支持库可以调用 DLL 封装的类,vc 与 e ...vc++ 类指针变量 转移后变成类目标类指针&lt;用于转回&gt;。调用格式: 〈无返回值〉 类转移 (通用型变量 类目标变量,通用型变量 类源变量) - 易类神补刀-&gt;易类神补刀。 E类转

    VC++实现MFC程序方程求根的程序以及源代码

    Vc++实现方程求根的程序以及源代码,有MFC的窗口函数#include&lt;windows.h&gt; #include&lt;stdio.h&gt; #include&lt;math.h&gt; //声明窗口函数 LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM); int WINAPI WinMain(HINSTANCE ...

    郁金香VC++外挂编程全集中级篇2.1.3part02

    在接下来的一段时间将由我和大家一起学习游戏外挂的分析,制作。 课程分四个大章节 初级篇,中级篇,进阶篇,高级篇 初级篇内容:编写一个完整的,简单的外挂 C++的数据类型:Byte,Word,DWORD,int,float API函数的...

    VC++程序简单实例

    实例2-12:使用指针注意内存的分配。源代码在光盘中“\02\twelfthcpp”目录下。 实例2-13:引用实例。源代码在光盘中“\02\thirteencpp”目录下。 实例2-14:虚函数的使用实例。源代码在光盘中“\02\fourteencpp”...

    VC++ 动态改变鼠标指针形状源代码

    内容索引:VC/C++源码,系统相关,鼠标,指针 VC++ 动态改变鼠标指针形状源代码,当你把鼠标放到“OK”按钮上的时候,鼠标的形状就发生了变化,程序示范了如何改变鼠标光标,将鼠标指针移到超链接和按钮上。

    郁金香VC++外挂编程全集中级篇2.1.5part01

    在接下来的一段时间将由我和大家一起学习游戏外挂的分析,制作。 课程分四个大章节 初级篇,中级篇,进阶篇,高级篇 初级篇内容:编写一个完整的,简单的外挂 C++的数据类型:Byte,Word,DWORD,int,float API函数的...

    MFC应用程序中指针的使用

    MFC应用程序中指针的使用 各种指针的使用 学习用

    郁金香VC++初级、中级、进阶、高级+过驱动保护全套教程(已过期)

    1.1.2 用VC++写个最简单的外挂(实现游戏开局) a、鼠拟鼠标单击mouse_event b、鼠标指针移动还原 c、集成到startgame函数里 1.2、用CE查找棋盘数据 1.2.1、CE中的数据类型 a、数据类型:Bit,Byte,Word,...

    VC++基础视频教程100讲

    共100讲,包括最基本的C,C++,VC环境的安装配置及顺序,判断,循环、if与switch条件分支语句、一维数组的概念、二维数组、字符数组(字符串)、函数分类等各类语法,本教程1-11节为EXE格式,故无法现在学习,所以本站...

    VC++ 多线程与聊天室程序的创建

    VC++ 多线程与聊天室程序的创建 VC++ 多线程与聊天室程序的编写,多线程应用中容易出现的问题。互斥对象的讲解,如何采用互斥对象来实现多...在接收线程函数中,遗忘了释放指针的操作,在随盘代码中已更正,特此说明。

Global site tag (gtag.js) - Google Analytics