资讯专栏INFORMATION COLUMN

三文读透指针语法【中篇】@指针的进阶---函数指针+函数指针数组+指向函数指针数组的指针

blastz / 1076人阅读

摘要:三文读透指针上篇本文将继续介绍有关函数指针的相关内容。在大型工程里,函数指针应用还是挺普遍的。首先看阅读下面两段有趣的代码出自语言陷阱与缺陷看看他们是什么意思代码代码函数指针数组函数指针数组,即存放函数指针的数组。

在【上篇】中,小边已经介绍过了字符指针,指针数组,数组指针及数组和指针传参,忘记的小伙伴可以点这里哦。
三文读透指针【上篇】

本文将继续介绍有关函数指针的相关内容。

正文开始@边通书

5.函数指针

函数指针,顾名思义是存放函数地址的指针。
在大型工程里,函数指针应用还是挺普遍的。
首先看:

阅读下面两段有趣的代码(出自《C语言陷阱与缺陷》)

看看他们是什么意思?

//代码1 (*(void (*)())0)();//代码2void (*signal(int , void(*)(int)))(int);


6.函数指针数组

函数指针数组,即存放函数指针的数组
上代码感受一下:

那如何应用呢?
现在我们来实现一个计算器功能:

函数指针数组的应用:


小注意:下篇文章将继续对此段代码进行改造(回调函数)。

再附上源代码:

#includeint Add(int x, int y){	return x + y;}int Sub(int x, int y){	return  x - y;}int Mul(int x, int y){	return x*y;}int Div(int x, int y){	return x / y;}void menu(){	printf("**************************/n");	printf("***** 1.Add    2.Sub *****/n");	printf("***** 3.Mui    4.Div *****/n");	printf("*****     0.exit     *****/n");	printf("**************************/n");}int main(){	int input = 0;	do	{		menu();		printf("请选择:>/n");		scanf("%d", &input);		int x = 0;		int y = 0;		int ret = 0;		int(*pfArr[5])(int, int) = { 0, Add, Sub, Mul, Div };		//                           0   1    2   3    4		if (input == 0)		{			printf("退出计算器/n");		}		else if (input >= 1 && input <= 4)		{			printf("请输入两个操作数:>/n");			scanf("%d %d", &x, &y);			ret = pfArr[input](x, y);			printf("%d/n", ret);		}		else		{			printf("输入错误,请重新输入/n");		}	} while (input);	return 0;}

7.指向函数指针数组的指针


未完待续@边通书

三文读透指针语法【下篇】,将介绍回调函数及,使用回调函数实现,用冒泡排序模拟实现qsort

敬请期待! 哈哈哈哈

同时,鄙人才疏学浅,如果你发现有错误或我理解不到位之处,或是建议,衷心希望大家能多多指教。最后,想得到就别等待趁现在去热爱,小伙伴们一起加油呀!

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/119015.html

相关文章

  • 三文读透指针语法【上篇】@指针进阶---字符指针+数组指针+指针数组+数组传参和指针传参

    摘要:本文重点字符指针指针数组数组指针数组传参和指针传参引在指针的初阶已接触过指针的概念,并介绍了如下内容指针是个变量,用来存放地址,地址唯一标识一块内存空间,所以地址也形象的被称作指针。解析指针数组指针数组即,存放指针的数组。 ...

    sshe 评论0 收藏0
  • 深入理解C语言指针——挑战C指针笔试题 (和bug郭一起学C系列)

    摘要:所以是数组指针,而是指针数组。因为对一个二维数组,可以不知道有多少行,但是必须知道一行多少元素。当二维数组数组名传参,形参接收时,数组的行可以省略,列不能省略,如果省略了列,我们就无法知道当指针加减跳过几个字节。 ...

    miracledan 评论0 收藏0
  • C语言进阶指针进阶

    摘要:本章节在此基础上,对语言阶段指针进行更深层次的研究。数组指针的类型由数组类型决定,先找出数组的类型去掉名就是类型。相当于数组指针所指向数组的数组名。数组指针指向整个数组,将其看作二维数组并解引用得到一行的首元素,从而遍历访问。 ...

    浠ラ箍 评论0 收藏0
  • C语言进阶:动态内存管理

    摘要:释放不完全导致内存泄漏。既然把柔性数组放在动态内存管理一章,可见二者有必然的联系。包含柔性数组的结构用进行动态内存分配,且分配的内存应大于结构大小,以满足柔性数组的预期。使用含柔性数组的结构体,需配合以等动态内存分配函数。 ...

    shinezejian 评论0 收藏0
  • 【建议收藏】两万字深度解读 指针 ,学好指针看这一篇文章就够了

    摘要:在位机器上,指针变量的大小为个字节。指针类型的强制类型转换对指针变量进行强制类型转换的一般形式将保存的类型指针强制转换为类型指针后赋值给,其中还是为,没有改变。 前言 大家好,我是努力学习的少年,今天这篇文章是专门写关于指针的知识点,因为指针内容比较多,所以我将指针的这篇文章我将它分为...

    zhkai 评论0 收藏0

发表评论

0条评论

blastz

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<