1.函数指针
将函数首地址存入函数指针中。
函数指针顾名思义,有函数声明的模样,外加指针。作为函数名。
#include<stdio.h>
int add(int x,int y)
{
return x + y;
}
void main()
{
printf("%d\n",add(3,4));
int (*p)(int, int) = add;//*p是指针,指向函数int (int,int)。
//int add(int,int)。*p->add或&add(首地址)
printf("%d",p(3,4));
}
#include<stdio.h>
void trans(int (*p)(int, int))
{
int x, y;
scanf("%d%d",&x,&y);
printf("%d",p(x,y));
}
int add(int x, int y)
{
return x + y;
}
void main()
{
printf("%d\n", add(3, 4));
trans(add);
}
2.指向函数的指针数组
函数指针数组,有函数声明的模样,外加指针数组。指针数组指向的是函数的首地址。
函数指针数组的用途是转移表。
#include<stdio.h>
int add(int x,int y)
{
return x + y;
}
int sub(int x, int y)
{
return x - y;
}
void main()
{
int (*p)(int, int) = add;//*p是指针,指向函数int (int,int)。
//int add(int,int)。*p->add或&add(首地址)
int (*pp[2])(int, int) = {add,sub};
for (int i = 0; i < 2; i++)
{
printf("%d\n",pp[i](3,4));
}
}
void *p可以接收任意类型的地址。