函數指針與函數指針數組有什麼區別呢?讓我們從下面的兩個例子中看看其二者之間的區別吧
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;
}
連續調用多個函數時,可以使用函數指針數組,但是形參必須是一致的。