为了账号安全,请及时绑定邮箱和手机立即绑定

【备战春招】第12天-C01函数指针

标签:
C
  • 课程名称:Linux C语言指针与内存
  • 课程链接:Linux C语言指针与内存-慕课网 (imooc.com)
  • 章节名称:
    • 第4章:指针与内存
      • 4-6 函数指针与指针指向的数据访问
    • 讲师姓名:DavidChin
  • 时间:2023-02-18 23:30

课程内容

  • 指针内部保存地址
    • 保存地址是指向什么样的数据是比较复杂的
    • 可以指向基本数据类型,比如整型、浮点型
      • 定义int *pIntA = &a,把变量a地址值保存到指针变量pIntA中
    • 由于代码也是保存在内存中,所以代码也有自己在内存中的地址值,所以无论main函数还是普通函数都会有在内存中的地址值
      • 使用函数指针:int (*pFunction)(int) = &main()
      • 将main函数的地址值赋值给指针变量
      • 这个定义的意思详解
        • (*pFunction)表示为一个pFunction是一个指针
        • (int)表示所指向的函数有一个参数,参数类型为int
        • int没有被符号包裹的表明所指向的函数返回值为int型
      • 这里要强调,如果变量名前有*号,且被括号包裹,说明这个变量就是一个指针
        • 至于这个指针是指向基本类型,还是其它复杂结构,要看括号外部的写法
        • 比如int (*p)[]
          • p是一个指针
          • 这个指针是指向一个数组
          • 数组中的内容都是int数据类型
        • 再比如int (*p[])
          • p是一个数组
          • 数组中类型为指针
          • 这些指针指向int类型数据
        • 从上面例子可以看出,查看数组定义真实含义
          • 要从变量名开始
          • 首先向右看,确定类型
          • 直到碰到括号或结束
          • 再向变量左面看
          • 如果有*,说明是指针
          • 否则就是前面所定义的类型

学习心得

指针就是地址,这么看来代码中所有的一切都是地址
函数指针
GDB看函数指针
函数名不代表函数指针,要使用&函数名来取得函数地址值,然后可以赋值给函数指针

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消