逻辑推理:可以看出,中间的那个人可能是“诚实的家伙”或者“说谎的家伙”或者“犹豫不决的”,这里形成悖论;根据推理,
假设中间为犹豫不决的,那么左右两边因为至少有一句是真的,而左右都没说中间是“犹豫不决的”,那么假设不成立;
假设中间为诚实的家伙,那么很显然,假设不成立;
推出中间为说谎的家伙,则右边为诚实的家伙,左边是犹豫不决的;
解:
指针函数:int* fun(int x,int y);
函数指针:int (*fun)(int x,int y);
可以简单粗暴的理解为,指针函数的*是属于数据类型的,而函数指针的星号是属于函数名的。
再简单一点,可以这样辨别两者:函数名带括号的就是函数指针,否则就是指针函数。
通过括号,可以看出后面两个是(int * (*)(int *,int*),int*)是参数,分别是函数指针 int * (*)(int *,int*) 和 int* ;
形式:typedef 返回类型(*新类型)(参数表)
功能: 定义新的类型。
typedef char (*PTRFUN)(int);
PTRFUN pFun;
char glFun(int a){ return;}
void main()
{
pFun = glFun;
(*pFun)(2);
}