这两天一直都在看孙鑫的视频,今天回来却发现精华为2了,原来是aogun指点的那个排序分析。
所以就又看了看那个函数指针的运用,慢慢才看明白了点。
现在来说说自己的理解,大家指正:
typedef TYPE (*pFUNC)(parameter);
//TYPE表示函数返回的类型。
//那么pFUNC就表示指向返回TYPE类型函数的函数指针。(pFUNC现在是一种类型)
我们可以把函数看成象变量那样。
说函数返回什么类型,我们就说他是什么类型的函数好了,方便理解。(当然,说一个函数光看他的返回类型不能确定是不是同一种类型,还要看参数类型和个数,这里为了方便说出我的观点,暂时简易表达)
假设有一个函数:TYPE fun(type);我们称这个函数是TYPE型函数。(type是一种类型)
那么&fun就是指向这个类型的函数的指针的值(即函数的地址)(记住:不理解的时候就把函数想成普通变量)。
我们说变量可以通过指向这个变量的指针来引用他,同样,我们也可以获取函数的地址来引用这个函数。
//-------函数指针赋值
因此定义一个pFUNC型的变量pf;
又因为从&fun获取函数的地址
因此,pf=&fun;可以通过pf来调用该函数。-------> pf(a);
//--------函数指针作为函数的参数
TYPE CALLFUNC(TYPE fc(type), type i)
{
fc(i);
}
先来看第一个参数是什么类型,他肯定是一个指向函数的指针(因为他右边有参数)。那么他指想的函数是什么类型的呢?-----是TYPE型的函数。
那么fc就是一个指向TYPE型函数的函数指针。
第2个参数,就是这个函数指针需要的参数了。
当然函数可以有多个参数:
举例:
typedef int (*func)(int,int);
int add(int a,int b){return a+b;}
func fc=&acc;
fc(1,2);
最后。其实你可以把 typedef int (*func)(int,int);
看成int (*func)(int,int); 在吧*func看成一个整体标识符(比如:addFunc)
那么看看:int addFunc(int ,int);
就知道func是指向addFunc这样类型的函数的指针
[此贴子已经被作者于2006-8-5 9:19:48编辑过]