函数指针的使用

指针函数

指针函数:本质是函数,返回值是一个指针

int*arr(int,char);

 arr是一个函数,int,char是形参列表,int *作为一个整体,是 arr函数的返回值,是一个指针的形式。

函数指针

函数指针 :本质是一个指针,该指针的地址指向了一个函数,所以它是指向函数的指针。
函数指针就是指向代码段中函数入口地址的指针。

int (*arr)(int,char);

 int为返回值,*arr作为一个整体,代表的是指向该函数的指针,int,char为形参列表。其中arr被称为函数指针变量 

eg1:函数指针的应用


void test(int a)
{
	printf("%d", a);
}
int main()
{
	void (*p)(int);
	p = test;
	(*p)(9);
}

eg2:函数指针在结构体中的应用

void Dance_func()
{
	printf("Xiao Ming is dancing!\n");
}
void Sing_func(int i) {
	printf("Xiao Ming Sang %d Songs.\n", i);
}
typedef struct {
	void (*dance)();   //函数指针的正确形式
	void (*sing)(int i);
} student;
int main(void)
{
	student Xiao_Ming;
	Xiao_Ming.dance = Dance_func; //对结构体变量的赋值。函数名Dance_func是指针
	Xiao_Ming.dance();            //调用Dance_func()
	Xiao_Ming.sing = Sing_func;   //同上
	Xiao_Ming.sing(3);
	return 0;
}

1. 如何定义函数指针。在代码中,使用函数指针定义了两个函数,即Dance_func和Sing_func,函数指针的定义形式为:void (*函数名)()。

2. 如何使用结构体。在代码中定义了一个名为student的结构体,包含了两个函数指针dance和sing。

3. 如何将函数指针赋给结构体成员。在主函数中,将Dance_func函数指针和Sing_func函数指针分别赋值给Xiao_Ming结构体变量的dance和sing成员,从而让Xiao_Ming结构体变量具有指向这两个函数的指针。

4. 如何通过函数指针调用函数。在主函数中,通过Xiao_Ming.dance()和Xiao_Ming.sing(3)语句,可以分别调用Dance_func和Sing_func函数,并输出它们的结果。

你可能感兴趣的:(数据结构,c++,开发语言)