refer @ https://blog.youkuaiyun.com/linwh8/article/details/50346749
# include <stdio.h>
int main(void) {
int a[4][3] = {
{1, 2, 12},
{3, 4, 34},
{5, 6, 56},
{7, 8, 78}
};
int (*pArr) [3]; //一定要加上括号,因为[]的优先级高于*
pArr = a;
for (int i = 0; i < 4; i++)
for (int j = 0; j < 3; j++)
printf("%d ", pArr[i][j]);
return 0;
}
指针数组 数组指针
refer @ https://www.cnblogs.com/hongcha717/archive/2010/10/24/1859780.html
- 这个数组指针和指针数组的区别讲得特别好!
函数指针 指针函数
refer@ https://blog.youkuaiyun.com/u013476464/article/details/43277047
- 这两者的区别 跟 “指针数组“ 以及 ”数组指针“ 的区别很像
利用函数指针的回调函数机制
refer@ https://blog.youkuaiyun.com/qingdujun/article/details/69789300
其中可以看到
- sort函数的cmp重载机制实际上就是回调函数的利用
- 回调可以实现解耦和
- 使用 ( *functionPtr )( )进行函数调用【显式使用函数指针】和使用 functionPtr ( )进行函数调用【functionPtr存储的就是函数的首地址,可以直接用函数首地址进行调用】是一样的
- typedef的用法
- 我觉得这个写的很好
https://www.cnblogs.com/csyisong/archive/2009/01/09/1372363.html
其中有个复杂类型简单化的命名,没有讲清楚,我觉得这个补充的很好
https://blog.youkuaiyun.com/ilun/article/details/1648016 - 印象很深的一个点就是:
之后就可以直接用functionPtr代指这个函数了! ==》 所谓回调函数 就是这样~#typedef void (* functionPtr) ( int a,int b )
- 另一个印象比较深的点就是 typedef和define在定义别名的时候的区别 : define只是把东西到时候替换上去,所以经常有( )之类的结核性要注意,但是typedef 就不用担心这么多了!!【感觉还是typedef好使啊】
- 我觉得这个写的很好