c语言-函数指针

目录

  • 前言
  • 一、函数指针
    • [1.1 函数指针定义](#1.1 函数指针定义)
    • [1.2 函数指针调用函数](#1.2 函数指针调用函数)
    • [1.3 函数指针代码分析](#1.3 函数指针代码分析)
  • 总结

前言

本篇文章介绍c语言中的函数指针以及函数指针的应用。


一、函数指针

函数指针:指向函数的指针。

函数在编译时分配地址。

&函数名 和 函数名代表的意义相同,都表示函数的地址。

1.1 函数指针定义

c 复制代码
	int (* pf)(int,int);

int:表示函数指针指向的函数的返回值类型为int
pf:表示函数指针变量名
(int,int):表示函数指针指向的函数的参数类型
pf的类型:int(*)(int,int)

1.2 函数指针调用函数

c 复制代码
	//写法一
	int ret1 = (*pf)(2,3); //通过对函数指针进行解引用
	//写法二
	int ret2 = pf(2,,3);  //函数指针调用函数的简写形式

1.3 函数指针代码分析

下面两断代码来自《c陷阱与缺陷》

代码一

c 复制代码
	(* (void(*)()) 0)(); 

上面这行代码表示一次函数调用

void(*)() 表示函数指针类型

( void(*)() )0 表示将整型值0强制转换为函数指针类型

(* (void(*)()) 0)() 表示调用地址为0的函数

代码二

c 复制代码
	void(* signal_func(int, void(*)(int)) )(int);

上面代码表示一次函数声明

函数名 signal_func

参数类型int和void(*)(int)

返回值类型 void(*)(int)

将代码进行简写

c 复制代码
	typedef void(*SIGNALTYPE)(int); //将void(*)(int)函数指针类型重命名为SIGNALTYPE
	SIGNALTYPE signal_func(int, SIGNALTYPE);

总结

相关推荐
良木生香36 分钟前
【数据结构-初阶】详解栈和队列(1)---栈
c语言·数据结构·算法·蓝桥杯
菠萝地亚狂想曲1 小时前
使用C语言操作LUA栈
c语言·junit·lua
东华万里1 小时前
第十五讲 指针 从本质吃透 C 语言指针(上)
c语言·开发语言
Logic1012 小时前
深入理解C语言if语句的汇编实现原理:从条件判断到底层跳转
c语言·汇编语言·逆向工程·底层原理·条件跳转·编译器原理·x86汇编
恶魔泡泡糖2 小时前
最小系统组成部分
c语言·单片机
iCxhust2 小时前
8088单板机C语言汇编混合编程实验方法与步骤
c语言·汇编·单片机·嵌入式硬件·微机原理
雨落在了我的手上2 小时前
C语言入门(二十八):动态内存管理(2)
c语言·开发语言
小龙报3 小时前
【算法通关指南:基础算法篇】高精度专题:一篇破除超数运算问题
c语言·数据结构·c++·算法·链表·贪心算法·visual studio
Yupureki3 小时前
《算法竞赛从入门到国奖》算法基础:入门篇-双指针
c语言·开发语言·数据结构·c++·算法·visual studio
努力努力再努力wz4 小时前
【Linux网络系列】:网络+网络编程(UDPsocket+TCPsocket)
java·linux·c语言·开发语言·数据结构·c++·centos