码迷,mamicode.com
首页 > 其他好文 > 详细

函数数组

时间:2014-09-19 18:56:45      阅读:297      评论:0      收藏:0      [点我收藏+]

标签:style   blog   color   io   strong   for   div   sp   log   

#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
*/

 

函数数组

标签:style   blog   color   io   strong   for   div   sp   log   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!