一、函数指针
一、定义
函数指针是指向函数的指针变量。 因此“函数指针”本身首先应是指针变量,只不过该指针变量指向函数。这正如用指针变量可指向整型变量、字符型、数组一样,这里是指向函数。
二、声明方法
void test()
{
printf("hello world\n");
}
int main()
{
printf("%p\n",test);
printf("%p\n",&test);
return 0;
}
//此时打印出的两个地址相同,如果要存储test函数的地址,应该声明为:
void (*ptest)();
//形参可以省略 这就是一个指向test的函数指针
二、函数指针数组
数组是一个存放相同类型数据的存储空间,如果把函数的地址存放到一个数组中,那这个数组就叫做函数指针数组。
int (*parr1[10])(); //函数指针数组
int (*parr2)(); //函数指针
函数指针数组比函数指针多了一个[ ]操作符。
函数指针数组的用途:转移表
三、指向函数指针数组的指针
指向函数指针数组的指针是一个指针,指针指向一个数组,数组的元素都是函数指针。
void test(const char* str)
{
printf("%s\n", str);
}
int main()
{
//函数指针pfun
void (*pfun)(const char*) = test;
//函数指针的数组pfunArr
void (*pfunArr[5])(const char* str);
//指向函数指针数组pfunArr的指针ppfunArr
void (*(*ppfunArr)[10])(const char*) = &pfunArr;
return 0;
}