【C语言进阶】指针的进阶【中篇】

本文深入探讨C语言中的函数指针,包括函数指针的基本概念、函数指针数组、指向函数指针数组的指针以及回调函数的使用。通过实例解析,阐述函数指针在简化代码和提高效率上的作用,并提供了习题练习链接以帮助读者巩固知识。
摘要由CSDN通过智能技术生成

  💘作者:你我皆为凡人

 💘博客主页:你我皆为凡人的博客

 💘名言警句:时间不会为任何人停留,而事物与人,无时不刻也在变化着。每一个人,也都在不停向前!

 💘觉得博主文章写的不错的话,希望大家三连(✌关注,✌点赞,✌评论),多多支持一下!!

 💘系列作品:

 💘

 💘C语言编程刷题篇

 💘经典题型系列

 

 

文章目录

目录

文章目录

🙈 前言

💫函数指针

💫函数指针数组

💫指向函数指针数组的指针

💫回调函数

💞习题练习入口

 🙈 总结


🙈 前言

本篇既上篇后续又讲解了新的知识,关于函数指针,函数指针数组,指向函数指针数组的指针与回调函数这些一看就比较令人头疼的知识点,一些比较高的知识点,希望大家可以理解并且学会


提示:以下是本篇文章正文内容,下面案例可供参考

💫函数指针

之前的数组指针是指向数组的指针就是数组指针

函数指针就是指向函数的指针就是函数指针

那么我们知道 数组指针是取数组的地址,那么函数莫非就是取出函数的地址?

那么下面我们来探索函数指针:

#include<stdio.h>
int add(int x, int y)
{
	return x + y;
}
int main()
{
	int arr[5] = { 0 };
	//&数组名--取出的数组的地址
	int(*p)[5] = &arr; //数组指针
	//&函数名-取出的就是函数的地址嘛?
	printf("%p\n", &add);
	//函数名,是函数的首元素地址嘛,函数怎么有首元素呢?
	printf("%p\n", add);
	//对于函数来说,&函数名和函数名都是函数的地址
	//如果要取出函数的地址,该如何存放呢?
	int (*pf)(int, int) = &add;
	return 0;
}

 首先要注意,函数指针其实和数组指针大同小异,&函数名和函数名都是函数的地址,如果要取出函数的地址,首先要说明是个指针 (*pf)函数内参数类型是(int,int)返回值是int,这就构成了函数指针,指向的是一个函数

我们使用指针是为了有朝一日可以用到它,那么函数指针是如何使用的呢

int (*pf)(int, int) = &add;
	int ret = (*pf)(2, 3);
	printf("%d", ret);
	return 0;

 其实(*pf)里面的*在这里没有意义,大家想一想,既然add可以是地址,&add也是地址,那么把add直接赋值给pf也可以,我们平常调用函数是 add(2,3),那么直接pf(2,3)也是相同的道理

那么函数指针如何使用呢?

int add(int x, int y)
{
	return x + y;
}
void calc(int(*pf)(int, int))
{
	int a = 3;
	int b = 5;
	int ret = pf(a, b);
	printf("%d\n", ret);
}
int main()
{
	calc(add);
	return 0;
}

 这样看起来好像麻烦了

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值