首页 > 其他 > 详细

函数数组

时间:2014-09-19 18:56:45      阅读:229      评论:0      收藏:0      [点我收藏+]
#include <unistd.h>
typedef int (FUN) (void);
typedef FUN_PTR (FUN*) ;
int print1(void)
{
    printf("1111111\n");
    sleep(1);
}

int print2(void)
{
    printf("2222222\n");
    sleep(1);
}

int print3(void)
{
    printf("333333\n");
    sleep(1);
}

int print4(void)
{
    printf("444444\n");
    sleep(1);
}

int print5(void)
{
    printf("555555\n");
    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
*/

 

函数数组

原文:http://www.cnblogs.com/mylinux/p/3981881.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!