c语言返回数组的函数类型(返回数组函数介绍和使用)

最近看到一些同学问题,有提到说:如何在一个函数中返回数组呢?

能否直接在自定义 函数中,写成char *类型返回值,直接返回呢?,代码如下:

C/C++学习交流231662552

直接返回str数组名(注意不需要加&,还有好多同学犯这个错)

但事实上,运行结果并非正常,我们尝试在调用函数中输出,可以看到结果并非是原来内容(当然你的电脑输出可能还不是这个样子)

如下:

C/C++学习交流231662552

原因大家可以从str的属性入手,str本身是一个自定义函数中的局部变量,是一个数组有一百个字节,它的生命周期当然也随着它所在的函数一起,正所谓“一招天子一朝臣”,随着fun函数调用的结束,其中的各种局部变量也将被系统收回,理所当然的str数组这一百个字节也将被收回,所以”Hello www.dotcpp.com”这串字符串也就灰飞烟灭了!自然你在main函数里再输出肯定已经不是原来的内容了!

怎么样,可以理解吧!

不过,还没有结束,依然有同学继续问,可为什么我换成下面这种写法就可以了呢?

如下图:

C/C++学习交流231662552

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

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

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

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

这样讲,大家能理解吗?

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

同时,下篇我们将为大家讲解如何实现自定义函数的数组传递问题!c语言返回数组的函数类型(返回数组函数介绍和使用)同时,下篇我们将为大家讲解如何实现自定义函数的数组传递问题!

1. 本站所有资源来源于用户上传和网络,因此不包含技术服务请大家谅解!如有侵权请邮件联系客服!2995598829@qq.com
2. 本站不保证所提供下载资源的准确性、安全性和完整性,资源仅供下载学习之用!如遇无法下载、失效或广告,请联系客服处理,有奖励!
3. 您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容资源!如用于商业或者非法用途,与本站无关,一切后果请用户自负!
4. 如果您也有好的资源或教程,您可以投稿发布,成功分享后有优币奖励和额外收入!

派优网 ★★投稿栏目★★ c语言返回数组的函数类型(返回数组函数介绍和使用) https://www.paayoo.com/46665.html

常见问题
  • 本站所有资源版权均属于原作者所有,本站所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。
查看详情
  • 最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或联络我们。
查看详情

相关推荐