函数指针
在程序中定义一个函数,编译时会为这个函数代码分配一段内存来存储。这段内存的首地址称为函数的地址,函数名表示的就是这个地址。
既然是地址,我们就可以定义一个指针变量去指向这个内存段,这个指针就叫做函数指针。(这儿可以把函数当作一个特殊的变量)
函数指针的定义方式:
函数返回值类型 (* 指针变量名) (函数参数列表);
比如,函数如下:
void Output(char *p, int len)
{
for (int i = 0; i < len; ++i)
{
printf("%c", *(p + i));
}
}
要想定义一个可以指向函数Output的函数指针的话,需要定义如下: void (*p)(char *p, int len);
使用函数指针调用函数:
void Output(char *p, int len);
int main()
{
void(*poutput)(char *p, int len); //定义一个函数指针
poutput = Output; //把Output函数的首地址赋给指针变量poutput
char str[] = "HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld ";
(*poutput)(str, strlen(str)); //通过函数指针调用Output函数
system("pause");
return 0;
}
void Output(char *p, int len)
{
for (int i = 0; i < len; ++i)
{
printf("%c", *(p + i));
}
}