C语言函数指针用法

C语言函数指针用法

函数指针本质上是指针,它指向一个函数。

例如int (*p)(int); – 从 p 处开始, 先与指针结合, 说明 p 是一个指针, 然后与()结合, 说明指针指向的是一个函数, 然后再与()里的 int 结合, 说明函数有一个int 型的参数, 再与最外层的 int 结合, 说明函数的返回类型是整型, 所以 p 是一个指向有一个整型参数且返回类型为整型的函数的指针。

给出一个实例能够更好的理解:

#include "stdio.h"

void print(void)
{
	printf("print\n");
}
void PRINT(void)
{
	printf("PRINT\n");
}

//定义了一个别名为p0的函数指针
typedef void (*p0)(void);   //使用时要定义一个变量p0 p;

/*******************************************************************/
int (*p1)(int c,int d);    //等价于int (*p1)(int,int);
int add(int a,int b)
{
	return a+b;
}
int main(void)
{
	p0 p;
    p = print;
	p1 = add;
	(*p)();//打印print		
	printf("\n%d\n",(*p1)(1,2));//打印3
	p = PRINT;
	(*p)();//打印PRINT
	return 0;
}

打印结果:

C语言函数指针用法_第1张图片

由此可以看出,函数的函数名就是这个函数的地址,可以将函数地址赋给函数指针,通过函数指针直接调用此函数。

你可能感兴趣的:(C语言,c语言,开发语言)