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

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++ 函数经典 vc++ 函数经典 vc++ 函数经典

    在VC++编程环境中,函数是实现特定功能的基本代码单元,它们可以被其他代码多...以上是VC++函数经典的一些关键概念,掌握这些知识点将有助于编写高效、灵活的C++程序。在实际编程中,应结合具体需求灵活运用这些功能。

    VC++ 回调函数和线程的程序例子

    在VC++中,我们通常通过函数指针或者成员函数指针来实现回调。回调函数常用于事件处理、异步操作的完成通知等场景。 #### 1. 函数指针 首先,我们需要定义一个函数指针类型,然后声明一个函数,最后将该函数的地址...

    函数指针的定义与使用

    例如,如果我们有一个接受两个整数并返回它们之和的函数,我们可以这样定义函数指针: ```c++ int (*addFunc)(int, int); ``` 这里的`addFunc`就是函数指针,它可以指向一个接受两个`int`类型参数并返回`int`类型...

    VC++6.0函数经典PDF

    此外,书中还涵盖了默认参数值、函数指针以及函数对象的概念,这些都是C++中函数使用的高级特性。 关于“功能描述”,书中对每个函数的实际作用进行了清晰的解释,包括数学运算函数、输入输出函数、字符串处理函数...

    VC++ 回调函数使用实例

    除了使用函数指针,VC++还支持使用`std::function`和`std::bind`来处理更复杂的回调情况,如成员函数作为回调。`std::function`可以存储任何可调用对象,而`std::bind`可以用来绑定特定的对象和参数到一个可调用对象...

    VC++回调函数使用

    2. **定义函数指针类型**:接下来,创建一个函数指针类型,该类型与回调函数的签名匹配。例如: ```cpp typedef void (*CallbackType)(int); ``` 3. **传递函数指针**:然后,在需要的地方,将回调函数的地址...

    VC++获得主窗口指针的方法

    在Windows编程中,获取主窗口指针是一项基本操作,尤其对于使用Microsoft Visual C++ (VC++) 开发的应用程序而言。主窗口是任何应用程序的核心部分,它承载着用户界面的主要元素。掌握如何获取主窗口指针有助于进行...

    vc++学习心得编码规范

    学习VC++,首先需要掌握C++的基础知识,包括基本语法、数据类型、控制结构、函数、类和对象等。在深入学习过程中,会涉及面向对象编程(OOP)的概念,如封装、继承、多态等。此外,VC++还支持STL(Standard Template...

    VC++ 6.0 编程高手之函数经典

    通过学习《VC++ 6.0 编程高手之函数经典》,读者将能够掌握如何高效地利用函数来编写高质量、可维护的C++代码,同时了解函数在实际开发中的最佳实践。这份教程对于希望成为VC++ 6.0编程高手的人来说,无疑是一份宝贵...

    用VC++做的指针式时钟

    【VC++制作指针式时钟】:这个项目是一个基于微软的Visual C++(简称VC++)集成开发环境,利用Microsoft Foundation Classes (MFC)库创建的桌面应用程序。MFC是微软提供的一套C++类库,它封装了Windows API,使得...

    vc++6.0语言函数查询

    同时,了解函数重载、函数指针和模板函数等高级特性也是进阶学习的重要部分。 **C++编程技巧** 在使用VC++6.0进行C++编程时,还需要掌握一些编程技巧,例如内存管理(包括动态内存分配和释放)、异常处理、面向...

    VC++ 函数经典 目录+内容

    本资源"VC++ 函数经典"提供了全面且深入的C++函数使用指南,对于学习和提升VC++编程技能来说,是一个非常实用的参考资料。 首先,我们要理解C++中的函数类型。C++支持多种类型的函数,包括内置函数(如math库中的...

    VC++ 经典函数库

    总之,《VC++经典函数库》是一本深度剖析VC++函数库的资源,对于想要精通VC++编程的开发者来说,是不可或缺的学习资料。通过深入学习书中的内容,开发者不仅可以掌握基础函数的用法,还能了解如何有效地利用这些工具...

    VC++学习问题总结

    在深入探讨VC++学习问题之前,我们先了解一下VC++是什么。VC++,全称为Visual C++,是由微软公司开发的一款强大的C++编程环境。它集成了编译器、调试器以及资源编辑器等工具,使得开发者能够高效地创建Windows应用...

    vc++学习题目

    【VC++学习题目】主要针对的是使用Visual C++这一编程工具进行C语言的学习与实践。Visual C++,简称VC++,是由微软公司推出的面向对象的C++编程环境,它集成了开发Win32应用程序和.NET Framework应用程序的功能。在...

    VC++快速学习C语言

    【标题】"VC++快速学习C语言"是一个针对编程初学者的主题,旨在介绍如何在Microsoft Visual C++(简称VC++)环境下使用C语言进行程序开发。VC++是一个强大的集成开发环境,它支持多种编程语言,包括C和C++。本教程将...

    VC++函数详解大全

    **VC++函数详解大全** 在计算机编程领域,Visual C++(简称VC++)是由微软公司开发的一款集成开发环境,主要用于编写使用C++语言的应用程序。它不仅支持标准C++,还包括了微软特有的MFC(Microsoft Foundation ...

    VC++函数经典教程(PDF)

    《VC++函数经典教程》是一本深入探讨Visual C++编程技术的权威教材,它涵盖了从基础知识到高级特性的广泛内容,旨在帮助读者掌握利用VC++进行高效程序开发的关键技能。在这一篇幅丰富的讨论中,我们将围绕VC++的函数...

Global site tag (gtag.js) - Google Analytics