C/C++教程

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

本文主要是介绍【备战春招】第12天-C01函数指针,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
  • 课程名称: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看函数指针
函数名不代表函数指针,要使用&函数名来取得函数地址值,然后可以赋值给函数指针

这篇关于【备战春招】第12天-C01函数指针的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!