【难点回顾】指针函数 2024-04-10 15:29:14 文/Edward今天开始,我们将来介绍C语言里面最让人头痛的两个东西,指针函数和指向函数的指针。指针函数这个名字乍一看非常唬人,又是指针又是函数的,但是其实它并没有想象的那么复杂,千万别被它的名字吓到了。所谓的指针函数,说白了就是一个返回值为指针的函数。其定义形式为:数据类型 *函数名(形式参数1,形式参数2,……形式参数n);指针函数其实类似于我们之前讲述的利用指针类型的形式参数传递返回值,由于C语言早已经规定了一个函数只有一个返回值,但是当我们需要让一个函数返回出多个返回值的时候,可以让它返回一个指针。其实指针函数配合我们后续将要学习的结构体效果更加,而本小节我们使用指针函数来返回一个指向数组的类型。假设我们需要写一个函数实现一个功能,将一个数组中的所有元素全部取反,然后输出。要实现这个功能对于现在来说已经非常简单了,我们只要使用之前学过的指针类型形式参数将结果传递出来即可,实现代码如图1所示。图1 利用指针参数传递多个结果这种用法有一个比较不明了的地方,就是它利用参数的形式把函数结果传递出来,对于某些强迫症患者来说比较虐心。那么使用指针函数是否就可以解决这个问题了呢?。如图2所示。图2 利用指针函数传递多个结果我们可以将运算的结果直接利用指针函数返回的指针返回出来。虽然理想很美好,但是显示肯定是残酷的,因为这种方法根本实现不了数组的返回。这是因为当我们返回一个指针的时候,它所指向的数组ret_array是一个临时变量定义的数组,因此一旦当函数退出时,这一块内存立即被编译器回收,所以得到的结果会和我们期望的南辕北辙。要解决这个问题其实也很简单,我们只需要将函数中用以存储结果的数组声明成静态的即可,如图3所示。图3 利用指针函数传递多个结果虽然我们可以利用指针函数实现我们想要的结果,但是由于其返回的是一个地址,因此想要结果得以正常返回,一定要保证这个地址是唯一且永远存在的,因而一定要定义静态类型的变量来存放这个地址。正由于这个原因,函数指针用起来其实非常容易出错,因此就连C语言库函数都很少用这种方式去传递函数结果。我们以后如果要传递回来多个结果时,一定要利用指针类型的形式参数去传递,而返回值只做一个函数运算结果的状态。 赞 (0) 相关推荐 C开源hash代码uthash的用法总结 uthash 是C的比较优秀的开源代码,它实现了常见的hash操作函数,例如查找.插入.删除等待.该套开源代码采用宏的方式实现hash函数的相关功能,支持C语言的任意数据结构最为key值,甚至可以采用 ... 【难点回顾】指向函数的指针 文/Edward 定义一个指向函数的指针 前面我们说了,指针的本质其实就是用来存放地址的变量,将一个对象的地址赋值给指针的过程被称为指向.我们前面已经讲过了指针指向变量,指针指向数组,指针指向字符 ... 重难点突破 | 分段函数题型汇编 -END- 戳" 【C语言更新】指针函数 文/Edward 今天开始,我们将来介绍C语言里面最让人头痛的两个东西,指针函数和指向函数的指针. 指针函数这个名字乍一看非常唬人,又是指针又是函数的,但是其实它并没有想象的那么复杂,千万别被它的名字 ... 第五十八集 指针函数 介绍了C语言中的指针函数 【视频更新】第五十二集 初识指针——函数参数传递的不可逆性 通过一个函数测试,说明了函数形式参数传递的不可逆性,并且通过一个指针改善了这个问题 【重要】指针函数与函数指针? 常持正念方圆梦:不忘初心总是春. 1 前言 数组.指针,这两个词结合的顺序不同,其意义也不同.具体有何不同之处可移步至数组指针与指针数组?进行查看. 同样的,函数.指针这两个词结合的顺序不同其意义也不 ... 中考数学难点突破:函数图象与性质 讲座要点 1.巧用二次函数对称轴快速解决有关a.b.c的代数式判断问题. 2.辨别图象开口方向,巧解运动路径的图象判断问题. 3.利用k的几何意义巧解三角形面积问题. 【重难点】利用函数图像解决复合函数零点问题 这几天家里的电脑坏了,所以没有推送文章. 复合函数的零点问题一直是学生头疼的问题,今天这篇文章重点给大家介绍一种解决复合函数零点问题的通用方法,希望大家认真学习研究一下. 先给大家几个例题看看,什么样 ... 高一数学易错点与难点解析23函数单调性求参数范围答案 高一数学易错点与难点解析23函数单调性求参数范围答案