函数指针

  在程序中定义一个函数,编译时会为这个函数代码分配一段内存来存储。这段内存的首地址称为函数的地址,函数名表示的就是这个地址。

既然是地址,我们就可以定义一个指针变量去指向这个内存段,这个指针就叫做函数指针。(这儿可以把函数当作一个特殊的变量)

函数指针的定义方式:

  函数返回值类型 (* 指针变量名) (函数参数列表);

  比如,函数如下:

  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));
  }
}

原文地址:https://www.cnblogs.com/fengxing999/p/10250791.html