C 数组指针 指针数组 函数指针 指针函数

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/Hesy_H/article/details/100520726

refer @ https://blog.csdn.net/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.csdn.net/u013476464/article/details/43277047

  • 这两者的区别 跟 “指针数组“ 以及 ”数组指针“ 的区别很像



利用函数指针的回调函数机制

refer@ https://blog.csdn.net/qingdujun/article/details/69789300
其中可以看到

  • sort函数的cmp重载机制实际上就是回调函数的利用
    • 回调可以实现解耦和
    • 使用 ( *functionPtr )( )进行函数调用【显式使用函数指针】和使用 functionPtr ( )进行函数调用【functionPtr存储的就是函数的首地址,可以直接用函数首地址进行调用】是一样的

  • typedef的用法
    • 我觉得这个写的很好
      https://www.cnblogs.com/csyisong/archive/2009/01/09/1372363.html
      其中有个复杂类型简单化的命名,没有讲清楚,我觉得这个补充的很好
      https://blog.csdn.net/ilun/article/details/1648016
    • 印象很深的一个点就是:
    #typedef void (* functionPtr) ( int a,int b )
    
    之后就可以直接用functionPtr代指这个函数了! ==》 所谓回调函数 就是这样~
    • 另一个印象比较深的点就是 typedef和define在定义别名的时候的区别 : define只是把东西到时候替换上去,所以经常有( )之类的结核性要注意,但是typedef 就不用担心这么多了!!【感觉还是typedef好使啊】

猜你喜欢

转载自blog.csdn.net/Hesy_H/article/details/100520726