函数指针:一个指针变量,存放的是函数的地址
定义形式:
类型 (*指针变量名)(参数列表);
如:
int (*p)(int x,int y);
p是一个指针,它指向一个函数,该函数有2个整形参数,返回类型为int。p首先和*结合,表明p是一个指针。然后再与()结合,表明它指向的是一个函数。指向函数的指针也称为函数指针。
#include <stdio.h>
#include <stdlib.h>
void printfWelcome()
{
printf("hello world!\n");
}
int add(int a,int b)
{
return a + b;
}
int main()
{
/*
int i = 10;
printf("i = %d\n",i);//通过变量名来访问一个变量
int *p = &i;
printf("i = %d\n",*p);
printfWelcome();//通过函数名来调用函数
*/
//1.定义函数指针
void (*p2)();//1.如何表示指针:* 2.如何知道是函数:() 3.函数指针是专用的,
//格式要求很强(参数类型,个数,返回值都要一样)
//2.给函数指针赋值
p2 = printfWelcome;//函数名就是地址,就像数组一样,数组名就是地址
//3.如何通过函数指针调用函数
//法一
p2();//直接通过指针名字 + ()
//法二
(*p2)();//取内容 (*指针名字())
int (*padd)(int a,int b);
padd = add;
//int ret = padd(1,2);//法一
int ret = (*padd)(1,2);//法二
//(*padd)(1,2);//法三
printf("ret = %d\n",ret);
system("pause");
return 0;
}
运行结果: