欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

C语言_指针_函数指针

程序员文章站 2024-03-07 19:31:51
...

函数指针的定义方式

1. 定义函数类型,通过类型来定义指针

//函数名MyFunc其实就是函数的入口地址
int MyFunc(int a, char b)
{
	printf("%c是char,%d是int类型\n", b, a);
}
int main(void)
{
	typedef int(FUNC_TYPE)(int, char);	//定义函数类型
	FUNC_TYPE *pFunc = MyFunc;  //函数指针指向函数入口地址
	
	pFunc(1, 'a');		//函数指针调用函数(实际上是编译器内部会做解引用)
	(*pFunc)(2, 'b');	//函数指针解引用调用函数
	
	system("pause");
	return EXIT_SUCCESS;
}

2. 直接定义函数指针类型

//函数名MyFunc其实就是函数的入口地址
int MyFunc(int a, char b)
{
	printf("%c是char,%d是int类型\n", b, a);
}
int main(void)
{
	typedef int(*FUNC_P)(int, char);	//定义函数指针类型
	FUNC_P pFunc2 = MyFunc;
	pFunc2(3, 'c');
	
	system("pause");
	return EXIT_SUCCESS;
}

3. 直接定义函数指针变量

//函数名MyFunc其实就是函数的入口地址
int MyFunc(int a, char b)
{
	printf("%c是char,%d是int类型\n", b, a);
}
int main(void)
{
	typedef int(*FUNC_P)(int, char);	//直接定义函数指针变量
	FUNC_P pFunc2 = MyFunc;
	pFunc2(3, 'c');
	
	system("pause");
	return EXIT_SUCCESS;
}

源码

#include<stdlib.h>

//函数名MyFunc其实就是函数的入口地址
int MyFunc(int a, char b)
{
	printf("%c是char,%d是int类型\n", b, a);
}

int main(void)
{
	//1.定义函数类型,通过类型来定义指针
	typedef int(FUNC_TYPE)(int, char);
	FUNC_TYPE *pFunc = MyFunc;  //函数指针指向函数入口地址

	pFunc(1, 'a');		//函数指针调用函数(实际上是编译器内部会做解引用)
	(*pFunc)(2, 'b');	//函数指针解引用调用函数

	//2.直接定义函数指针类型
	typedef int(*FUNC_P)(int, char);
	FUNC_P pFunc2 = MyFunc;
	pFunc2(3, 'c');

	//3. 直接定义函数指针变量
	int(*pFunc3)(int, char) = NULL;
	pFunc3 = MyFunc;
	pFunc3(4, 'd');

	system("pause");
	return EXIT_SUCCESS;
}
相关标签: # 指针