函數指針與函數指針數組

函數指針與函數指針數組有什麼區別呢?讓我們從下面的兩個例子中看看其二者之間的區別吧
eg1:

#include <stdio.h>

int func(int num)
{
    printf("num = %d \n", num);
}
int func2(int *(p_func)(int))
{
    p_func(5);
}
int main()
{
    int (*p_func)(int);//函數指針 4個字節
    p_func = func;//func   &func 都是函數的地址

    func(5);
    p_func(5);
    func2(func);

    return 0;
}

函數名作實參傳遞時,用函數指針接。
函數指針做形參指向的函數叫回調函數。
函數指針能提高代碼的擴展性(對功能修改的作用)

eg2:

#include <stdio.h>

int add(int a, int b)
{
    return a + b;
}

int sub(int a, int b)
{
    return a - b;
}

int mul(int a, int b)
{
    return a * b;
}

int main()
{
    int (*array[3])(int ,int);//函數指針數組
    array[0] = add;
    array[1] = sub;
    array[2] = mul;

    int i;
    for(i = 0; i < 3; i++)
    {
        array[i];
        printf("%d\n", array[i](5, 6));
    }

    return 0;
}

連續調用多個函數時,可以使用函數指針數組,但是形參必須是一致的。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章