2008年12月16日 星期二

函數指標 III

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

int a (void)
{
    printf("aaaaa\n");
    return 0;
}

int b (void)
{
    printf("bbbbb\n");
    return 0;
}

int c (void)
{
    printf("ccccc\n");
    return 0;
}

int main (void)
{
    int (*ab[])(void)={a,b,c,NULL};
    int (**ab_ptr)(void);

    for (ab_ptr=ab; *ab_ptr; ++ab_ptr)
    {
        (*ab_ptr)();
    }

    return 0;
}


用typedef的寫法---【轉貼】 uboot source code

typedef int (init_fnc_t) (void)
//這行定義了一個無需傳入參數(void)且返回整數型態(int)的函式型態別名叫init_fnc_t
 
int main (void)
{
    init_fnc_t **init_fnc_ptr;
    init_fnc_t *init_sequence[] = {
        a,
        b,
        NULL
    };

    for (init_fnc_ptr = init_sequence; *init_fnc_ptr; ++init_fnc_ptr)
    {
        //if((*init_fnc_ptr)() != 0);
        (*init_fnc_ptr)();
    }

    return 0;
}
 
補充: 【轉貼 工程師的家
1. 
typedef int ToInt(char *str); 
 //上面這行定義了一個需傳入字串(char *)且返回整數(int)的函式型態別名叫 ToInt 
 ToInt HexToInt,DecToInt;//宣告HexToInt,DecToInt這兩個函式 
 現在你的程式可以呼叫HexToInt(...),DecToInt(...)了。
 
2.
typedef int* intP; 
    const intP p2; 
 
p2 會是哪一種 type 的變數呢? 是第二種. 
 
如果用 #define intP int*, 就會是第一種.
 

沒有留言:

張貼留言