函数指针作用:函数指针有两个用途:
(1)调用函数;(2)做函数的参数.
下面介绍一下用【函数指针】来调用strcpy函数,并分析其中的三个疑问。
char a[5] = {0};
char* (*pFunc)(char*, const char*); //因为strcpy是一个指针,故要用(*pFunc)
//char *pFunc(char*, const char*); //这样写是指针函数了;不是函数指针
pFunc = strcpy; //函数指针赋值
pFunc(a, "abc"); //通过函数指针pFunc调用strcpy函数
printf("a = %s.\n", a);
问题一:定义函数指针是为什么要用char* (*pFunc)(char*, const char*);而不能用char *pFunc(char*, const char*);?
解答:如果用char *pFunc(char*, const char*);编译器会报错:error: lvalue required as left operand of assignment(pFunc = strcpy;)。意思是pFunc = strcpy;等式的左边是一个函数名,函数名实质是一个地址,这个地址在编译器编译开始之前就已经确定了,在编译过程中不会改变。所以说pFunc是一个常量,不能做左值)
问题二:char* (*pFunc)(char*, cons