在下这厢有礼了。
第一步意思理解:
1. 指针函数:指针函数是指带指针的函数,即本质是一个函数。函数的返回类型是一种类型指针。
例子:
int *Func(int a,int b); /* 声明一个指针函数 */
2. 函数指针:函数指针是指向函数的指针变量,即本质是一个指针变量。指向函数的指针包含了函数的地址,可以通过它来调用函数。
例子:
void (*Func)(); /* 声明一个函数指针 */
Func = Func1;/* 将Fun1函数的首地址赋给指针Func */
将函数的地址赋给函数指针,可以采用下面两种形式:
Func = &Func1;
Func = Func1;
取地址符&是不必要的,因为函数标识符的标号表示了它的地址,如果是函数调用,还必须包含一个圆括号括起来的参数表。
注意:函数指针与指针函数的表示方法不同,最大的区别是看函数名是否带()且指针*在括号里面没,在里面就是函数指针;在括号外面就是指针函数;
第二步代码例子实践
代码目的是将函数指针和指针函数的简单应用展示;
void (*funcp)(void); /* 函数指针 */
char *funcq(void); /* 指针函数 */
void FileFunc(void), EditFunc(void);
void main()
{
char *test;
funcp=FileFunc; /* 函数指针指向函数,说明函数 */
(*funcp)(); /* 指针函数代表函数 */
funcp=EditFunc;
(*funcp)();
test = funcq(); /* 指针函数返回值是指针 */
printf("\n\r 你的爱好 %s",test);
while(1); //vc6.0 停留窗口;其他平台不用
}
char *funcq()
{
char *Temp = "Love girl";
return Temp;
}
void FileFunc()
{
printf("FileFunc\n");
}
void EditFunc()
{
printf("EditFunc\n");
}
打印结果如下
第三步指针函数与函数指针产生关系(你懂得)(升级)
代码目的就是将用函数指针去代表指针函数展示;
我不太理解void * (*func)();我的理解就是指针的指针,我要研究下;明个写这块的代码。