函数指针与函数指针数组有什么区别呢?让我们从下面的两个例子中看看其二者之间的区别吧
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;
}
连续调用多个函数时,可以使用函数指针数组,但是形参必须是一致的。