• uboot 二重指针 init_fnc_t ** init_fnc_ptr


    昨晚看老朱的视频,老朱说不懂二重指针来看他这个uboot的视频是狗看星星。

    当时心里虚的一逼,自己第一看确实没看懂,赶快百度看了下,在源码中把这个单独提出来练习了下。

    linux 下编译。

    具体代码如下:

    #include <stdio.h>
    #include <stdlib.h>

    typedef int (init_fnc_t) (void);  // 函数类型定义 返回值为int 参数为 void 命名为 init_fnc_t

     // 定义满足类型的函数 fun1---fun4
    int fun1(void)  
    {
        printf("%s,%d ",__FUNCTION__,__LINE__);
        return 0;
    }

    int fun2(void)
    {
        printf("%s,%d ",__FUNCTION__,__LINE__);
        return 0;
    }

    int fun3(void)
    {
        printf("%s,%d ",__FUNCTION__,__LINE__);
        return 1;
    }

    int fun4(void)
    {
        printf("%s,%d ",__FUNCTION__,__LINE__);
        return 1;
    }

    // 定义满足函数类型的数组
    init_fnc_t *init_sequence[] = {
        fun1,
        fun2,        
        fun3,
        fun4,
        NULL,
    };

    int main()
    {
        init_fnc_t ** init_fnc_ptr;

     // 通过二重指针来遍历数组
        for (init_fnc_ptr = init_sequence; *init_fnc_ptr; ++init_fnc_ptr)
        {
            printf("%s,%d ",__FUNCTION__,__LINE__);
            #if 1
            if ((*init_fnc_ptr)() != 0)
            {
                printf("%s,%d ",__FUNCTION__,__LINE__);
            }
            #endif
        }
    }

  • 相关阅读:
    LeetCode "Sum Root to Leaf Numbers"
    LeetCode "Single Number"
    POJ #1033
    POJ #1011
    POJ #2411
    POJ #1276
    POJ #1260
    POJ #1221
    POJ #1080
    POJ #1050
  • 原文地址:https://www.cnblogs.com/zhangjianrong/p/15217623.html
Copyright © 2020-2023  润新知