其他人已经对您的示例代码的细节发表了评论,所以我将尝试解决您的问题:函数指针有什么用处? 概括地说:
函数指针在 C 中特别有用 *(见底部的 *)当你有一组相似的函数时,它们 包含相同的参数列表,但具有不同的输出。您可以定义一个函数指针数组,例如,可以更轻松地从开关、循环或在池中创建一系列线程时调用该系列中的函数,这些线程包括类似的工作函数作为参数。调用数组使其变得像更改数组的索引一样简单,以获得每个独特情况所需的特定功能。
举个简单的例子,strcat()和strcpy()这两个字符串函数有一个参数列表:(char *, const char *),因此,可以赋值给一个数组的函数指针。首先创建函数指针数组:
char * (*pStr[2])( char *a, const char *b);` //array of function pointers pStr[]
然后,将 strcat 和 strcpy 赋值给数组:
void someFunc(void)
{
pStr[0] = strcat; //assign strcat to pointer [0]
pStr[1] = strcpy; //assign strcpy to pointer [1]
}
现在,strcat() 或 strcpy() 可以称为:
int main(void)
{
char a[100]="kjdhlfjgls";
char b[100]="kjdhlfjgls";
someFunc();//define function pointers
pStr[0](a, "aaaaaaaa"); //strcat
pStr[1](b, "aaaaaaaa"); //strcpy
return 0;
}
示例输出:
这只是一个简单的例子。它没有探讨函数指针所能提供的全部用途,但说明了为什么函数指针在某些情况下可能更受欢迎的另一个原因。
* 此插图仅针对 C,与 C++ 不同,在 C++ 中,该语言固有的继承和多态特性会导致这个建议是不必要的。