栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C语言:函数指针

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C语言:函数指针

函数指针
  • 函数名本质是一个函数指针
  • 可以利用函数指针调用函数
函数指针的定义方式
  1. 先定义函数类型,再通过类型定义函数指针
  2. 定义函数指针类型,通过类型定义函数指针
  3. 直接定义函数指针变量
#define _CRT_SECURE_NO_WARNINGS
#include 
#include 
#include 

void func0401(int a, char c) {
	printf("hello worldn");
}

void test0401() {
	//先定义函数类型,再通过类型定义函数指针
	typedef void(func)(int, char);
	func* pFunc = func0401;
	pFunc(1, 'a');

	//定义函数指针类型,通过类型定义函数指针
	typedef void(*pfunc)(int, char);
	pfunc pFunc1 = func0401;
	pFunc1(1, 'a');

	//直接定义函数指针变量
	void(*p)(int, char)= func0401;
	p(1, 'a');
}

int main(void)
{
	test0401();
	return 0;
}

函数指针和指针函数的区别

函数指针:指向函数的指针
指针函数:函数返回值是指针的函数

函数指针的数组
void func0402() {
	printf("func0402调用了n");
}
void func0403() {
	printf("func0403调用了n");
}
void func0404() {
	printf("func0404调用了n");
}

void test0402() {
    //函数指针的数组
	void(*pArray[3])();
	pArray[0] = func0402;
	pArray[1] = func0403;
	pArray[2] = func0404;

	for (size_t i = 0; i < 3; i++)
	{
		pArray[i]();
	}
}
函数指针的应用:回调函数
#define _CRT_SECURE_NO_WARNINGS
#include 
#include 
#include 

//打印函数:可以打印任意类型的数据
void printText(void* data,void(*myPrint)(void*)) {
	myPrint(data);
}

void myPrintInt(void* data) {
	printf("%dn", *(int*)data);
}

void test0501() {
	int a = 10;
	printText(&a, myPrintInt);
}

int main(void)
{
	test0501();
	return 0;
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/968371.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号