0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

函数指针和指针函数是不是一个东西?

学益得智能硬件 来源:学益得智能硬件 2024-01-03 16:35 次阅读

函数指针和指针函数是不是一个东西?

这两个我们之前都有讲过,但是并没有放在一起比较过。

函数指针的本质是指针,就跟整型指针、字符指针一样,函数指针指向的是一个函数。

每个函数在内存中都会有一个地址,函数调用就是跳转到这个地址开始执行,而函数指针就是记录这个地址的变量。

026f24e4-aa13-11ee-8b88-92fbcf53809c.png  

定义起来稍微有点麻烦:

#include 


inttest(inta)
{
    return a;
}


int main()
{
    int (*p)(int) = test;
    
    return 0;
}
比如test函数,想要记录他的地址,可以这样定义指针p:
int (*p)(int) = test;
p是个指针,指向函数,函数有一个int类型的参数,函数的返回值是int。

调用函数的时候,不仅可以通过函数名来调用,也可以通过函数指针p来调用:
test(1);


p(1);
函数指针有什么用?

他的用处很大,比如C语言里面的回调函数,或者在结构体里面存放函数,都可以用函数指针来解决,不清楚的,可以翻翻以前的视频

指针函数的本质是函数,就像整型函数返回的是整型一样,指针函数返回的是指针。

于是我们可以随手写一个数组,返回数组的名字,因为数组名就是地址。
int *test()
{
    int array[5] = {0};
    
    return array;
}
这是一个典型的错误,切记不能返回局部变量的地址,因为函数调用完毕,内存释放,即使返回了这个地址,也不能使用。

可以返回堆空间地址,也可以返回全局变量地址,或者是静态变量地址都可以,这种返回地址的函数就叫指针函数。

那把这两个概念结合起来会怎么样?

可以,就叫指针函数指针:
int *(*p)() = test;
意思就是定义一个指针,让他指向刚才的指针函数,这就是C语言中的复杂类型声明,开发中确实很少会用到,但是笔试中出现的概率高达80%,所以,不要觉得它没用,想要学好C语言,务必得学会分析。








审核编辑:刘清
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 函数指针
    +关注

    关注

    2

    文章

    56

    浏览量

    3775
  • 指针函数
    +关注

    关注

    0

    文章

    10

    浏览量

    2741

原文标题:两分钟来搞懂函数指针和指针函数

文章出处:【微信号:学益得智能硬件,微信公众号:学益得智能硬件】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    函数指针的使用简述

    函数指针在Linux内核和C语言开发中用的非常多,而且在设计操作系统的时候也会用到,因此这里将详细讲解函数指针。既然函数
    的头像 发表于 09-09 08:56 1952次阅读
    <b class='flag-5'>函数</b><b class='flag-5'>指针</b>的使用简述

    函数指针指针函数的概念

    不少朋友会混淆“函数指针”和“指针函数”这两概念,本文详细介绍下。
    发表于 03-09 10:49 1146次阅读

    文详解函数指针与回调函数

    函数指针是指向函数指针变量。它允许我们将函数作为参数传递给其他函数或将
    发表于 08-22 10:36 475次阅读

    指针作为函数参数

    指针作为函数参数 大多数C程序员开始使用指针时是用它们实现函数的参数,所谓可变参数。为了理解可变参数是如何工作的,我们看看在C语言中如何执行
    发表于 07-29 11:49 2694次阅读

    函数指针指针函数定义

    函数指针指针函数,C语言学习中最容易混淆的些概念,好好学习吧
    发表于 01-11 16:44 0次下载

    C语言指针函数函数指针详细介绍

    C语言指针函数函数指针详细介绍。。。。。。。
    发表于 03-04 15:27 5次下载

    c语言函数指针定义,指针函数函数指针的区别

     往往,我们提到指针函数函数指针的时候,就有很多人弄不懂。下面就由小编详细为大家介绍C语言中函数
    发表于 11-16 15:18 3612次阅读

    ARM的函数指针指针函数的区别和用法

    在学习arm过程中发现这“指针函数”与“函数指针”容易搞错,所以今天,我自己想次把它搞清楚,找了
    的头像 发表于 06-20 10:08 3473次阅读

    理解函数指针函数指针数组、函数指针数组的指针

    理解函数指针函数指针数组、函数指针数组的指针
    的头像 发表于 06-29 15:38 1.5w次阅读
    理解<b class='flag-5'>函数</b><b class='flag-5'>指针</b>、<b class='flag-5'>函数</b><b class='flag-5'>指针</b>数组、<b class='flag-5'>函数</b><b class='flag-5'>指针</b>数组的<b class='flag-5'>指针</b>

    C语言-内联函数、递归函数指针函数

    这篇文章介绍C语言的内联函数、递归函数函数指针指针函数、局部地址、const关键字、exte
    的头像 发表于 08-14 10:03 1654次阅读

    指针进阶第五站:函数指针

    定义函数指针,指向的函数有两int形参并且返回
    发表于 08-17 15:58 517次阅读

    如何使用函数指针

    在程序中定义函数,则编译时系统就会为这段代码分配段存储空间,这段存储空间的首地址称为函数的地址,且
    的头像 发表于 03-30 15:09 831次阅读

    函数指针的基本概念和语法

    函数指针种非常强大的编程工具,它可以让我们以更加灵活的方式编写程序。在本文中,我们将介绍 8 函数
    的头像 发表于 12-12 09:33 433次阅读

    函数指针与回调函数的应用实例

    通常我们说的指针变量是指向整型、字符型或数组等变量,而函数指针是指向函数
    的头像 发表于 03-07 11:13 372次阅读
    <b class='flag-5'>函数</b><b class='flag-5'>指针</b>与回调<b class='flag-5'>函数</b>的应用实例

    面试常考+1:函数指针指针函数、数组指针指针数组

    在嵌入式开发领域,函数指针指针函数、数组指针指针数组是
    的头像 发表于 08-10 08:11 676次阅读
    面试常考+1:<b class='flag-5'>函数</b><b class='flag-5'>指针</b>与<b class='flag-5'>指针</b><b class='flag-5'>函数</b>、数组<b class='flag-5'>指针</b>与<b class='flag-5'>指针</b>数组