函数指针与函数指针数组

函数指针与函数指针数组有什么区别呢?让我们从下面的两个例子中看看其二者之间的区别吧
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;
}

连续调用多个函数时,可以使用函数指针数组,但是形参必须是一致的。

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