首页 > 后端开发 > 正文

C语言自定义函数如何返回数组(下) 客评价谭浩强C语言书到底好不好

2023-06-26 19:18:09 | 我爱编程网

C语言自定义函数如何返回数组(下)

C语言自定义函数如何返回数组(下)

通过上一篇的讲解,相信大家已经明白直接的return数组的问题以及原因了,今天我们将详细为大家讲解在函数中返回数组的常见办法。此类问题,应用场景往往为了解决函数间相互通信,比如某个函数内处理的完的结果数据需要交接给另一个函数的情况,那么一般来说,总结有以下三种:

  1. 直接使用全局变量:这种方法最方便,但此方法打破了函数间的通信及封装的思想,所以不推荐使用,不在今天讨论范围之内。
  2. 通过堆区动态开辟内存解决:C语言中,我们通常用malloc来在堆区动态开辟内存,利用堆区“现用现开辟,用完手动收回”特点,实现灵活管理。是实际开发中的常用办法,也是我们今天的主要内容。
  3. 由调用方传入数组指针:此种方法不需要函数返回地址,而是在调用时直接 传入数组地址,委托被调用方进行操作,由于此局部变量属于调用方本身,故即便被调用方结束内存释放,也不会被影响到该数组。

下面逐个实验,对于第二种方法,由于动态开辟内存在堆区,堆区不想上一讲中局部变量在栈区存储,系统根据它的生命周期自动收回,而是手动开辟,手动释放,这样就可以完全规避问题,例子与效果见下图:

需要注意的是:记得用完free掉,防止内存泄露!

第三种方法:虽然没有在函数中返回数组,但也可以解决数组通信问题,主要思路就是调用方中定义数组,然后将地址传入,由于该内存属于调用方,而非被调用方,故被调用方在调用结束后释放掉内存也无所谓。例子程序及效果如下:

关于数组使用传递的总结,大体如上,大家有任何问题和疑问还可以联系我们!

客评价谭浩强C语言书到底好不好


近来,总听到有一些吐槽谭浩强C语言入门这个本书的问题,在业内掀起一阵跟风行为,也令不少打算入门的同学选择困难,今天通过此文表达一个客观公正的观点。


我总结了一下吐槽谭浩强书不好的几个点:
1. 陈旧,有错误,比如void main问题
2. 太注重理论,过多++a+b++这种绕圈子的问题,太过应试不利于能力培养



其实,这本作为第一批清华大学出版,用于全国各地高校的第一本大规模推广的书籍,在当时资料匮乏、缺乏资源的年代,这本书已经是一本不可多得的好书了。错误、格式落后即便用现在的眼光看,也应该能够理解当时的处境,何况语言标准从C89、C90、C99多次大标准修订,我觉得这类问题大不可作为评判这本书不好的原因
另一个方便,许多朋友说这本书太过于纠结低级问题来回绕圈子,完全就是应试教学,根本培养不了编程人才,甚至因此贬低中国教育落后。我真的想说,这就是教育家与普通技术男的区别 ,如果你了解国情,作为从上到下的推广书籍的主编的时候,你就不会这么想了

其实,我觉得这些一条条的原因主要是应为一些对编程有更高要求,而看不上谭浩强C语言这种给初学者和小白的教材,甚至略有些“恃才傲物”的人们刻意放大的这本书的错误。
但如果你明白这本书是为了绝大部分C语言的学习者、编程入门的初学者等甚至很大一部分人是非计算机专业的人而准备,就明白这本书的创作目的了。所以,我们也会看到网上一些人们除了贬低这本书之外,还建议直接学习类似《C prime plus》、《C语言程序设计入门》翻译版等书籍了,笔者这里不完全赞同,唯一提醒的就是初学者要警惕“小马过河“的故事,知道自己“几斤几两”,选择适合自己的教材,才是正确的办法!


我爱编程网

C++
与“C语言自定义函数如何返回数组(下) 客评价谭浩强C语言书到底好不好”相关推荐
C语言自定义函数如何返回数组(上) 客评价谭浩强C语言书到底好不好
C语言自定义函数如何返回数组(上) 客评价谭浩强C语言书到底好不好

C语言自定义函数如何返回数组(上) C语言自定义函数如何返回数组(上) 最近看到一些同学问题,有提到说:如何在一个函数中返回数组呢?能否直接在自定义函数中,写成char*类型返回值,直接返回呢?,代码如下: 直接返回str数组名(注意不需要加&,还有好多同学犯这个错)但事实上,运行结果并非正常,我们尝试在调用函数中输出,可以看到结果并非是原来内容(当然你的电脑输出可能还不

2023-06-26 19:26:46
C语言自定义函数如何返回数组(下) C语言自定义函数如何返回数组(上)
C语言自定义函数如何返回数组(下) C语言自定义函数如何返回数组(上)

C语言自定义函数如何返回数组(下) C语言自定义函数如何返回数组(下) 通过上一篇的讲解,相信大家已经明白直接的return数组的问题以及原因了,今天我们将详细为大家讲解在函数中返回数组的常见办法。此类问题,应用场景往往为了解决函数间相互通信,比如某个函数内处理的完的结果数据需要交接给另一个函数的情况,那么一般来说,总结有以下三种: 直接使用全局变量:这种方法最方便,但此方法打

2023-06-26 19:36:09
 客评价谭浩强C语言书到底好不好
客评价谭浩强C语言书到底好不好

关于c语言的一些概述性问题 关于c语言的一些概述性问题 1.c语言规定,变量命名必须符合标识符的命名规则,例如:floatUS$这样就是错误的,因为出现了非法字符:$ 2.在整形常量中,不可包含”,“,比如:1,200 3.指数后面必须为指数;若想要表示字符”\”,应该写为:”\“ 4.

2023-06-26 19:32:19
客评价谭浩强C语言书到底好不好 驳“C语言无用”论
客评价谭浩强C语言书到底好不好 驳“C语言无用”论

客评价谭浩强C语言书到底好不好近来,总听到有一些吐槽谭浩强C语言入门这个本书的问题,在业内掀起一阵跟风行为,也令不少打算入门的同学选择困难,今天通过此文表达一个客观公正的观点。我总结了一下吐槽谭浩强书不好的几个点:1.陈旧,有错误,比如voidmain问题2.太注重理论,过多++a+b++这种绕圈子的问题,太过应试不利于能力培养其实,这本作为第一批清华大学出版,用于全国各地高校的第一本大规模推

2023-06-26 19:34:37
C语言自定义函数如何返回数组(下)
C语言自定义函数如何返回数组(下)

C语言自定义函数如何返回数组(下) C语言自定义函数如何返回数组(下) 通过上一篇的讲解,相信大家已经明白直接的return数组的问题以及原因了,今天我们将详细为大家讲解在函数中返回数组的常见办法。此类问题,应用场景往往为了解决函数间相互通信,比如某个函数内处理的完的结果数据需要交接给另一个函数的情况,那么一般来说,总结有以下三种: 直接使用全局变量:这种方法最方便,但此方法打

2023-06-26 19:22:04
C语言自定义函数如何返回数组(下) 驳“C语言无用”论
C语言自定义函数如何返回数组(下) 驳“C语言无用”论

C语言自定义函数如何返回数组(下) C语言自定义函数如何返回数组(下) 通过上一篇的讲解,相信大家已经明白直接的return数组的问题以及原因了,今天我们将详细为大家讲解在函数中返回数组的常见办法。此类问题,应用场景往往为了解决函数间相互通信,比如某个函数内处理的完的结果数据需要交接给另一个函数的情况,那么一般来说,总结有以下三种: 直接使用全局变量:这种方法最方便,但此方法打

2023-06-26 19:24:00
C语言自定义函数如何返回数组(上)
C语言自定义函数如何返回数组(上)

C语言自定义函数如何返回数组(上) C语言自定义函数如何返回数组(上) 最近看到一些同学问题,有提到说:如何在一个函数中返回数组呢?能否直接在自定义函数中,写成char*类型返回值,直接返回呢?,代码如下: 直接返回str数组名(注意不需要加&,还有好多同学犯这个错)但事实上,运行结果并非正常,我们尝试在调用函数中输出,可以看到结果并非是原来内容(当然你的电脑输出可能还不

2023-06-26 19:35:22
C语言中左值和右值的区别 客评价谭浩强C语言书到底好不好
C语言中左值和右值的区别 客评价谭浩强C语言书到底好不好

C语言中左值和右值的区别 C语言中左值和右值的区别 在C语言学习过程中,大家或许听到过左值和右值的概念,甚至在调试程序时编译器也会给出”leftoperandmustbel-value”即左操作数必须为左值!,今天我们将为大家详细解释这两个词,以及两者的区别! 简单而言,在赋值运算符“=”左边的就是左值,在赋值运算符“=&r

2023-06-26 19:28:19