- 课程名称:Linux C语言指针与内存
- 课程链接:Linux C语言指针与内存-慕课网 (imooc.com)
- 章节名称:
- 第4章:指针与内存
- 4-6 函数指针与指针指向的数据访问
- 讲师姓名:
DavidChin
- 第4章:指针与内存
- 时间:2023-02-18 23:30
课程内容
- 指针内部保存地址
- 保存地址是指向什么样的数据是比较复杂的
- 可以指向基本数据类型,比如整型、浮点型
- 定义
int *pIntA = &a
,把变量a地址值保存到指针变量pIntA中
- 定义
- 由于代码也是保存在内存中,所以代码也有自己在内存中的地址值,所以无论main函数还是普通函数都会有在内存中的地址值
- 使用函数指针:
int (*pFunction)(int) = &main()
- 将main函数的地址值赋值给指针变量
- 这个定义的意思详解
(*pFunction)
表示为一个pFunction是一个指针(int)
表示所指向的函数有一个参数,参数类型为intint
没有被符号包裹的表明所指向的函数返回值为int型
- 这里要强调,如果变量名前有*号,且被括号包裹,说明这个变量就是一个指针
- 至于这个指针是指向基本类型,还是其它复杂结构,要看括号外部的写法
- 比如
int (*p)[]
p
是一个指针- 这个指针是指向一个数组
- 数组中的内容都是int数据类型
- 再比如
int (*p[])
p
是一个数组- 数组中类型为指针
- 这些指针指向int类型数据
- 从上面例子可以看出,查看数组定义真实含义
- 要从变量名开始
- 首先向右看,确定类型
- 直到碰到括号或结束
- 再向变量左面看
- 如果有*,说明是指针
- 否则就是前面所定义的类型
- 使用函数指针:
学习心得
指针就是地址,这么看来代码中所有的一切都是地址
函数名不代表函数指针,要使用&函数名
来取得函数地址值,然后可以赋值给函数指针