iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >c++函数名指针和函数指针怎么定义
  • 314
分享到

c++函数名指针和函数指针怎么定义

2023-06-29 03:06:51 314人浏览 安东尼
摘要

本文小编为大家详细介绍“c++函数名指针和函数指针怎么定义”,内容详细,步骤清晰,细节处理妥当,希望这篇“c++函数名指针和函数指针怎么定义”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。前言我们先来看一下函数指针

本文小编为大家详细介绍“c++函数名指针和函数指针怎么定义”,内容详细,步骤清晰,细节处理妥当,希望这篇“c++函数名指针和函数指针怎么定义”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。

前言

我们先来看一下函数指针式如何定义的,假如我们有一个函数int fun(int){…};那么他对应的函数指针写法就应该是int (*p)(int);然后再对他进行赋值,即p=fun;之后你就可以在接下来的地方按p作为函数名来调用它用起来完全和fun一样。(注意这里的p指针并不是只能接受fun这个函数名,任何返回值是int,参数只有一个int的函数都可以把函数名赋给p)

首先说一下C/C++在创建一个变量的时候比如int a;相应的在内存就会分配一个4个字节(根据不同机器可能不同)空间来存放这个int变量,而假设这4个字节的起始地址是0XFF0A,那么实际上就存在一种变量名和内存地址的映射,即a可以看做是一个标示符,他只是代表着0XFF0A这个地址,在程序中你对a进行的操作实际上也就是对内存中以0XFF0A为首地址的4个字节的操作,特别是如果对a进行取地址操作也就是&a实际上就是返回0XFF0A这个地址值,实际上你可以看成就是返回一个指向这个地址的指针(如果你觉的不能理解,就当我没说吧).同理对于我们在程序中创建的函数,他是保存在程序中的单独区域的,而我们调用它们就像使用变量一样需要一个地址来唯一的指向它,所以每个函数都需要一个地址来唯一标识自己(也就是我们常说的入口地址),就像上面的a对应0XFF0A,那么假设我们定义了一个int fun(int){};函数的入口地址是0XAAEE,则fun也就是函数名他会映射0XAAEE,和上面的int变量a一样如果对它进行取地址&fun的话就会返回0XAAEE,实际上fun也是一种类型,就当它是函数名类型好了,只要记住函数名本身并不是一个指针类型就可以了。

在调用函数的时候有函数名就够了,比如fun(2);不要以为只要有函数名就能调用函数了,其实这只是写法上的一个迷惑点,而编译器在编译的时候一律都会进行所谓的"Function-to-pointer conversion",也就是把函数名隐式转换成函数指针类型,也就是要通过函数指针来调用函数,所以如果你在调用函数的时候写成(&fun)(2)也是一样能工作的,因为&fun实际上就是返回一个函数指针,参照上一段中&a的例子,只是这种写法很不常见,即使你不显式的写出&的话编译器也会隐式的进行转换,注意&fun左右的括号必须有,这是因为运算符优先级的问题。

其实即使写成(fun)(2)也是可以正常运行的,这是因为当编译器看到fun的时候发现它前面没有&也就是没有给他显示的转换成指针那么他就要隐式的转换成指针,当转换完之后发现前面又有一个这时候也就是要进行所谓的"解引用"操作,也就是到*后面里指针里取出来值,而那么值实际上也就也就是0XAAEE也就是函数名fun,这么一次隐式换然后再来一次解引用实际上相当于什么也没做,所以系统还会再进行一次隐式的"Function-to-pointer conversion",即使你写成(*******fun)(2)也会正常运行,和刚才的一个道理,只是多做了几次反复的转解操作而已,都是编译器自己完成的,不必去理会!

例 1

#include<iOStream>using namespace std;void fun(int a){}int main(){    cout<<fun<<endl;    cout<<*fun<<endl;    cout<<&fun<<endl;    cout<<*****fun<<endl;}

结果输出的值都是一样的,也就是都是指向同一个函数地址的指针值。

例 2

下面再结合自己定义的函数指针来看看:

#include<iostream>using namespace std;int fun(int a){    cout<<"fun"<<endl;    return 0;}void main(){    int(*p)(int)=fun;    int(*p1)(int)=*fun;    int(*p2)(int)=&fun;    p(1);    p1(1);    p2(1);}

例 3

发现函数都能正常的运行,其实p1,p2,p和fun赋值之后大家一样理解就行了。

代码:

#include<iostream>using namespace std;int fun(int a){    cout<<"fun"<<endl;    return 0;} void main(){    int(*p)(int)=fun;    p(1);//  (&p)(1);       (*p)(1);    (****p)(1);}

上面的程序也都会正常的运行,只要再理解的时候把p当成只是对函数名多做了一次转换就可以了,接下来理解都一样!注意上面注释掉的哪一行是不能运行的,因为p是我们自己定义的函数指针类型,如果你对指针取地址那么将得到p这个变量本身的地址,这就不能正确调用函数了!再多说一句,其实你如果运行&&fun这个式子也是非法的,至于为什么,大家一起帮我思考思考,我个人认为当我们运行&fun的时候他会转换成函数指针而实际上这个指针只是一个临时值而临时值是没有实际存放的内存地址的所以也就无法继续取地址了!

读到这里,这篇“c++函数名指针和函数指针怎么定义”文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注编程网其他教程频道。

--结束END--

本文标题: c++函数名指针和函数指针怎么定义

本文链接: https://www.lsjlt.com/news/322300.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • c++函数名指针和函数指针怎么定义
    本文小编为大家详细介绍“c++函数名指针和函数指针怎么定义”,内容详细,步骤清晰,细节处理妥当,希望这篇“c++函数名指针和函数指针怎么定义”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。前言我们先来看一下函数指针...
    99+
    2023-06-29
  • c++函数名指针和函数指针
    目录前言例 1例 2例 3前言 我们先来看一下函数指针式如何定义的,假如我们有一个函数int fun(int){…};那么他对应的函数指针写法就应该是int (*p)(...
    99+
    2022-11-13
  • C语言中怎么使用指针函数和函数指针
    本篇内容介绍了“C语言中怎么使用指针函数和函数指针”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、指针函数当一个函数声明其返回值为一个指针...
    99+
    2023-06-16
  • python(函数指针和类函数指针)
    【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】     函数指针和类函数指针在c语言下面的概念都比较简单,用在脚本下面也很方便。因为脚本语言一切类型都是对象,所以根本不存在指...
    99+
    2023-01-31
    指针 函数 python
  • C语言中如何使用指针函数和函数指针
    这篇文章给大家介绍C语言中如何使用指针函数和函数指针,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。一、指针函数当一个函数声明其返回值为一个指针时,实际上就是返回一个地址给调用函数,以用于需要指针或地址的表达式中。格式:...
    99+
    2023-06-17
  • C++函数指针,对象指针,this指针,指向类静态怎么用
    这篇文章主要介绍了C++函数指针,对象指针,this指针,指向类静态怎么用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇C++函数指针,对象指针,this指针,指向类静态怎么用文章都会有所收获,下面我们一起来看...
    99+
    2023-06-29
  • C++函数指针详解
    函数指针基础: 1. 获取函数的地址 2. 声明一个函数指针 3.使用函数指针来调用函数 获取函数指针: 函...
    99+
    2022-11-12
  • C++的函数与指针
    目录函数与指针指针作函数的参数-实现地址传递返回指针的函数指向函数的指针变量总结函数与指针 一个函数在编译时被分配一个入口地址,这个入口地址就称为函数的指针。在C++中, 函数名代表...
    99+
    2022-11-12
  • C++函数指针+对象指针+this指针+指向类静态和非静态成员的指针
    目录1、指向函数的指针2、对象指针3、this指针4、指向类的非静态成员的指针5、指向类的静态成员的指针 1、指向函数的指针 函数的代码在内存中的首地址,是由函数名表示的,也就是说函...
    99+
    2022-11-13
  • C语言的数组指针与函数指针详解
    目录前言函数指针语法数组指针与指针数组总结前言 数组指针和函数指针都是C语言比较难的知识点,尤其是函数指针,并且函数指针在开发中有着巨大的作用。 函数指针语法 定义一个函数指针,并通...
    99+
    2022-11-13
  • C语言函数指针怎么用
    这篇文章主要介绍“C语言函数指针怎么用”,在日常操作中,相信很多人在C语言函数指针怎么用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”C语言函数指针怎么用”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!定义...
    99+
    2023-06-22
  • C语言如何使用数组指针与函数指针
    这篇文章主要为大家展示了“C语言如何使用数组指针与函数指针”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“C语言如何使用数组指针与函数指针”这篇文章吧。函数指针语法定义一个函数指针,并通过函数指针...
    99+
    2023-06-29
  • Golang函数的指针数组、数组指针怎么应用
    这篇文章主要介绍了Golang函数的指针数组、数组指针怎么应用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Golang函数的指针数组、数组指针怎么应用文章都会有所收获,下面我们一起来看看吧。Golang指针数...
    99+
    2023-07-06
  • C++返回函数指针的定义方式是什么
    这篇文章主要介绍“C++返回函数指针的定义方式是什么”,在日常操作中,相信很多人在C++返回函数指针的定义方式是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”C++返回函数指针的定义方式是什么”的疑惑有所...
    99+
    2023-06-04
  • C++普通函数指针怎么使用
    本篇内容介绍了“C++普通函数指针怎么使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!进行C++编写程序时,你经常需要在一个函数中调用其他...
    99+
    2023-06-17
  • C语言函数指针详解
    目录Introduction函数指针 Function PointersExercise 1:qsort中的函数指针Exercise 2:总结Introduction 上一个lab的...
    99+
    2022-11-12
  • C++ 函数指针详细总结
    目录1、函数指针1.1 获取函数地址1.2 声明函数指针1.3 函数指针传参1.4 调用函数2、函数指针进阶1、函数指针 函数指针顾名思义,就是指向函数的指针。 和数据类似,C++当...
    99+
    2022-11-12
  • C++中函数指针有什么用
    这篇文章主要为大家展示了“C++中函数指针有什么用”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“C++中函数指针有什么用”这篇文章吧。1、函数指针函数指针顾名思义,就是指向函数的指针。和数据类似...
    99+
    2023-06-25
  • C/C++函数指针深入探究
    目录函数指针语法函数地址声明使用函数指针调用函数深入理解函数指针使用typedef 简化函数指针 为什么要使用函数指针? 调用的灵活性和通用性。 试想一下,我们在设计初期并不知道我们...
    99+
    2022-11-13
  • 如何理解C语言函数传参:指针的指针
    这篇文章主要介绍“如何理解C语言函数传参:指针的指针”,在日常操作中,相信很多人在如何理解C语言函数传参:指针的指针问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”如何理解C语言函数传参:指针的指针”的疑惑有所...
    99+
    2023-06-15
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作