zoukankan      html  css  js  c++  java
  • 函数数组

    #include <unistd.h>
    typedef int (FUN) (void);
    typedef FUN_PTR (FUN*) ;
    int print1(void)
    {
        printf("1111111
    ");
        sleep(1);
    }
    
    int print2(void)
    {
        printf("2222222
    ");
        sleep(1);
    }
    
    int print3(void)
    {
        printf("333333
    ");
        sleep(1);
    }
    
    int print4(void)
    {
        printf("444444
    ");
        sleep(1);
    }
    
    int print5(void)
    {
        printf("555555
    ");
        sleep(1);
    }
    
    FUN* functable[]={
        print1 ,
        print2,
        print3,
        print4,
        0
    };
    
    int main()
    {
        FUN **fnc_ptr  ;
     
        int i ;    
        for(fnc_ptr = functable ; *fnc_ptr ; ++fnc_ptr){
            (*fnc_ptr)();
        }
        fnc_ptr = functable;
        for(i=0 ; i<5;i++){
            (*(fnc_ptr+i))();
        }
        fnc_ptr = functable;
        for(i=0 ; i<5;i++){//Segmentation fault
             (fnc_ptr[i])();
        }
    }
    /*
    1111111
    2222222
    333333
    444444
    1111111
    2222222
    333333
    444444
    Segmentation fault
    */
    改:
    int main()
    {
        FUN **fnc_ptr  ;
     
        int i ;    
        for(fnc_ptr = functable ; *fnc_ptr ; ++fnc_ptr){
            (*fnc_ptr)();
        }
        #if 1
        fnc_ptr = functable;
        for(i=0 ; i< 4;i++){
            (*(fnc_ptr+i))();
        }
        #endif
        
        #if 1 
        fnc_ptr = functable;
        for(i=0 ; i< 4;i++){
             (fnc_ptr[i])();
        }
        #endif
    
    }
    /*
    1111111
    2222222
    333333
    444444
    1111111
    2222222
    333333
    444444
    1111111
    2222222
    333333
    444444
    */
  • 相关阅读:
    第十九天:类和对象
    第十五天:模块
    十四天:匿名函数
    十四天作业
    第十三天:迭代器、递归
    十二天:闭包和装饰器
    一个炒鸡简单的购物车
    十一天
    第十天
    第十天作业
  • 原文地址:https://www.cnblogs.com/mylinux/p/3981881.html
Copyright © 2011-2022 走看看