首页 > 后端开发 > 正文

C语言自定义函数如何返回数组(下) 编程入门为什么要先要学C语言

2023-06-26 19:20:41 | 我爱编程网

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

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

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

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

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

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

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

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

编程入门为什么要先要学C语言?



现在学编程的人越来越多,想必要学编程的同学第一个问题就是:那么多编程语言(C、C++、java、php、python、go、ruby等等),到底应该先学哪一个?

笔者的观点很明确:首选C语言!


纵观我国教育课程设置,各大高等院校普遍成熟的课程安排95%以上都是先学C语言(少部分非计算机专业院校安排VB或重点院校直接学C++),往后根据学校培养目标、课程体系需要决定开设C++或java或前端等其他开发语言。近几十年的计算机教育的发展也验证了这个课程安排的科学性。下面通过笔者这些年的感悟谈谈这样设置的好处及原因:


1.C语言本身的特点
语言诞生于上世纪70年代,本身在发明初期就定位为系统级语言,是面向过程编程,是专门为系统开发准备的中级语言,其安全性、效率、跨平台的特点决定了它最符合人们心目中编程语言的样子,加上其主导的特性,好多语言的解释器/编译器甚至新的语言本身都是通过C来改写或直接开发的,足以看出C语言的重要性

2.教学学习需要的安排
语言作为中级编程语言,从靠近机器还是靠近人的分级来看,最适合编程学习,适合奠定人们对程序的第一观念,为今后无论学习解释性语言、还是面向对象的高级语言都有决定性的铺垫作用,这也是很多高校把C语言作为第一门语言的原因

3.学习支持、应用场景多
无论是中学生还是成年人,学习C语言的应用场景都非常多,学习资料支持也非常多、成熟。中学生有NOI/NOIP竞赛、大学ACM、嵌入式开发、计算机二级等无论竞赛、开发、考试都无处不在C语言的影子



以上笔者十多年从业经验的感悟看法,希望对初学还犹豫的你有所帮助!

C++
与“C语言自定义函数如何返回数组(下) 编程入门为什么要先要学C语言”相关推荐
C语言自定义函数如何返回数组(上) 编程入门为什么要先要学C语言
C语言自定义函数如何返回数组(上) 编程入门为什么要先要学C语言

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

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

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

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

2023-06-26 19:24:30
C语言中左值和右值的区别 C语言自定义函数如何返回数组(下)
C语言中左值和右值的区别 C语言自定义函数如何返回数组(下)

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

2023-06-26 19:22:46
C语言自定义函数如何返回数组(下) 关于c语言的一些概述性问题
C语言自定义函数如何返回数组(下) 关于c语言的一些概述性问题

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

2023-07-16 10:11:57