指针数组和数组指针
Last updated on 9 months ago
指针数组
这个比较容易理解 ,我们日常使用的数组有 整型的数组,如 int a[100]; 有100个空间,里面都是存放整型变量的 , 也有浮点型的数组 float b[100]; 从前两个可以总结出这一类数组叫法都是 类型名 + 数组 , 我们也知道 指针也是类型! 只不过是比较特殊的类型(存地址)! 所以说 指针数组是存在指针的数组,那如何标识呢?
int *p[100] —-> int * (p[100])
1 |
|
数组指针
还是按照 上面 指针数组的推理: 指针也是有很多种类型的,如 int * p,说明这个 指针p指向 指向整型的内存,那数组指针呢? 我们可以重新理解为 这个指针是指向数组类型的, 数组指针的写法和指针数组很像,就是多了个括号
1 |
|
pa 是指向 数组a[3] 的指针 , int (*pa)[3] 是挺难理解的 , 我的理解是 *()和[ ] 是相同的优先级,现在是从左到右开始结合 int 代表着 p指向的内容是整型的,[3] 是说明有3个这样的空间
函数指针
函数即我们写的代码,代码也有有专门存放的空间,从内存布局上看,是存放在代码区,所以也是有地址的! 通过 函数名可以找到 代码块的地址
同数组指针一样的理解, 这个这个指针的类型是函数的(有点拗口,但还是抽象的形容吧) ,函数回调就可以用函数指针来实现
1 |
|
p是一个指针,返回的值是 整型的,后面 (int, int) 是函数的参数
这个规律是 返回值要相同,形参也要一致
函数指针数组
同上,这个数组的类型是 函数指针类型的,数组中的每一项都保存这个一个函数指针
1 |
|
p和 [10]相结合 有了个数组,然后和 * 结合 是个指针数组,和 int 结合 ,返回的值是 int 类型的, 然后和 () 就是形参列表
指针函数
这个不用说都明白的了,函数 返回值是 指针类型的
1 |
|
待更新