C语言:函数指针

函数指针

  • 函数名本质是一个函数指针
  • 可以利用函数指针调用函数

函数指针的定义方式

  1. 先定义函数类型,再通过类型定义函数指针
  2. 定义函数指针类型,通过类型定义函数指针
  3. 直接定义函数指针变量
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

void func0401(int a, char c) {
	printf("hello world\n");
}

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 <stdio.h>
#include <stdlib.h>
#include <string.h>

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

void myPrintInt(void* data) {
	printf("%d\n", *(int*)data);
}

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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值