首页 > 后端开发 > 正文

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

2023-06-26 19:16:03 | 我爱编程网

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

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

最近看到一些同学问题,有提到说:如何在一个函数中返回数组呢?能否直接在自定义 函数中,写成char *类型返回值,直接返回呢?,代码如下:

直接返回str数组名(注意不需要加&,还有好多同学犯这个错)但事实上,运行结果并非正常,我们尝试在调用函数中输出,可以看到结果并非是原来内容(当然你的电脑输出可能还不是这个样子)

如下:

原因大家可以从str的属性入手,str本身是一个自定义函数中的局部变量,是一个数组有一百个字节,它的生命周期当然也随着它所在的函数一起,正所谓“一招天子一朝臣”,随着fun函数调用的结束,其中的各种局部变量也将被系统收回,理所当然的str数组这一百个字节也将被收回,所以”Hello www.dotcpp.com”这串字符串也就灰飞烟灭了!自然你在main函数里再输出肯定已经不是原来的内容了!
怎么样,可以理解吧!不过,还没有结束,依然有同学继续问,可为什么我换成下面这种写法就可以了呢?

如下图:

答曰:这种写法情况下,str虽也属于是局部变量,但不是一个数组,而是一个指针,只有四个字节,存的是在常量区的字符串” Hello www.dotcpp.com”,但请注意,这个字符串在常量区,而不属于fun函数里的部分,全程序都可读,所以return之后依旧存在,返回的是str里的值,也就是字符串“Hello www.dotcpp.com”的首地址,是一个数,其实相当于把这个字符串的地址在str手里通过返回值转交到p里。

也可以打个比方:之前只有fun函数知道这个字符串,但现在已经马上不行了,临终前,交代:“我快不行了,赶紧把‘Hello www.dotcpp.com’的藏宝地址(字符串首地址)转交到main函数里!”

然后就return 快马加鞭的返回到main函数手里了!随后消失…

而后,main函数获得之后,你们也就知道了…

这样讲,大家能理解吗?

后期C语言逆向分析部分,也会有涉及到此处的原理,大家可以再深入学习理解。

同时,下篇我们将为大家讲解如何实现自定义函数的数组传递问题!

 

编程入门为什么要先要学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语言的影子



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

我爱编程网

更多相关文章关注我爱编程网:www.52biancheng.com

免责声明:文章内容来自网络,如有侵权请及时联系删除。
标签: C++
与“C语言自定义函数如何返回数组(上) 编程入门为什么要先要学C语言”相关推荐
编程语言python入门要学习哪些?
编程语言python入门要学习哪些?

编程语言python入门要学习哪些?学习python,主要学习ython基础语法、数据类型、字符编码、文件操作、函数、装饰器、迭代器、内置方法、常用模块等;之后再进阶学习,如框架等。阶段一:Python开发基础Python全栈开发与人工智能之Python开发基础知识学习内容包括:Python基础语法、数据类型、字符编码、文件操作、函数、装饰器、迭代器、内置方法、常用模块等。

2024-01-19 18:01:13
刚入大学,请问计算机二级,Python,c语言,c++,编程分别是什么?
刚入大学,请问计算机二级,Python,c语言,c++,编程分别是什么?

刚入大学,请问计算机二级,Python,c语言,c++,编程分别是什么?计算机二级是一门计算机等级的考试,其中报考的科目可以有好多种,主要分为两种——office和语言,而语言又分成三个大科目——高级语言程序设计,web语言网页开发,数据库程序设计,派森跟C就是其中高级语言程序设计的科目之一。考生只需要在公布的科目里随便报考一个就可。(自行看下图)C和C++的关系,可以看成win7和

2024-02-20 02:24:02
如何用c语言在windows平台上开发php extension
如何用c语言在windows平台上开发php extension

如何用c语言在windows平台上开发phpextension何使用C语言发PHP扩展函数功能:php面整数符号数其内部实现其实longunsignedlong于32位机器说php能表示整数2^31-1般应用碰于2^31-1于2^32数能用字符串表示于mixedint_ext(stringin)说字符串in表示整数于2^31-1返整数于返字符串发扩展步骤:(首先需要载php源码载

2024-09-23 08:43:13
在PHP语言中,为什么要引入“函数”这个概念?
在PHP语言中,为什么要引入“函数”这个概念?

php中function函数的用法在PHP中,function是用于定义和声明函数的关键字。函数是一段可重复使用的代码块,它封装了一系列操作或逻辑,并可以通过函数名进行调用和执行。通过使用函数,可以将代码模块化,提高代码的可读性、可维护性和重用性。在PHP中,function关键字用于定义和声明函数。函数是一段可重复使用的代码块,它封装了一系列操作或逻辑,并可以通过函数名进行调用和执行,

2025-01-04 03:59:21
编程入门先学什么?
编程入门先学什么?

编程入门先学什么?编程入门先学C语言或者python。为了解决使用机器语言编写应用程序所带来的一系列问题,人们首先想到使用助记符号来代替不容易记忆的机器指令。这种助记符号来表示计算机指令的语言称为符号语言,也称汇编语言。在汇编语言中,每一条用符号来表示的汇编指令与计算机机器指令一一对应;记忆难度大大减少了,不仅易于检查和修改程序错误,而且指令、数据的存放位置可以由计算机自动

2024-02-09 09:39:48
PHP与C语言的语法有什么不同
PHP与C语言的语法有什么不同

PHP与C语言的语法有什么不同PHP与C语言的语法有什么不同?PHP的基本语法和C是很相似的,可以说大部分编程语言的基本语法都是如出一辙的:顺序、选择(if)、循环(while)。不同之处有变量定义,还有实现的具体细节。但是,php主要是部署网站用的,所以大部分时候是要嵌在HTML语言里面的,并且与JS混合在一起,所以表面看上去很乱,远远没有C语言的单纯。以上是对格式方面的理

2024-09-04 16:58:18
那么多的C语言函数,怎么学啊,给个建议。
那么多的C语言函数,怎么学啊,给个建议。

那么多的C语言函数,怎么学啊,给个建议。学习任何知识,循序渐进总是最好的方式。不幸的是,很多人明知这个道理,却总是想走所谓的捷径。如果你是一个刚刚开始学习编程的中学生,或者你是一个刚刚进入计算机学院的本科生,又或者你是一个决心在计算机领域有所建树的初学者,你一定迫切地想知道,学习计算机技术,究竟应该从哪里下手。我的建议是:数学、英语、C语言。数学和英语的重要性已经不需要我来强调,

2025-02-08 13:04:57
C语言 timer函数 和time函数(php定时任务。求助)
C语言 timer函数 和time函数(php定时任务。求助)

C语言timer函数和time函数Timer()函数语法:Timer(interval{,windowname})参数:指定两次触发Timer事件之间的时间间隔,有效值在0到65之间。如果该参数的值指定为0,那么关闭定时器,不再触发指定窗口的Timer事件。windowname:窗口名,指定时间间隔到时要触发哪个窗口的Timer事件。省略该参数时,触发当前窗口的Timer事件返回值

2024-08-10 14:27:50