从函数或方法返回内存 – C++快速入门35
从函数或方法返回内存
让编程改变世界
Change the world by program
从函数或方法返回内存
动态内存的另一个常见用途是让函数申请并返回一个指向内存块的指针。掌握这个技巧很重要,尤其是在你打算使用由别人编写的库文件时。
如果不知道这个技巧,就只能让函数返回一个简单的标量值,如整型、浮点型或字符型。
换句话说,它既不能返回一个以上的值,也不能返回数组之类比较复杂的数据结构。
可以这样说,只要你想让函数返回的东西不是一个简单的值,就需要学习本讲内容。
这个技巧的基本思路并不复杂:在函数里调用 new 语句为某种对象或某种基本数据类型分配一块内存,再把那块内存的地址返回给程序的主代码,主代码将使用那块内存并在完成有关操作后立刻释放。
请看代码段:segment.cpp(源代码及课件下载地址)
为什么不应该让函数返回一个指向局部变量的指针
我们曾讨论过变量作用域的概念:函数或方法有它们自己的变量,这些变量只能在这个函数的内部使用,这些变量我们成为局部变量(local variable)。
我们又知道如何利用指针在某个函数内部改变另一个函数的局部变量的值(例如传址调用)。
这是绕开变量作用域的一种手段,在某些场合是非常必要的。
但小甲鱼必须明确地告诉众鱼油:任何一个函数都不应该把它自己的局部变量的指针作为它的返回值!
因为局部变量在栈里,函数结束自动会释放。
如果你想让一个函数在不会留下任何隐患的情况下返回一个指针,那它只能是一个动态分配的内存块的基地址。
函数指针和指针函数
今天的知识点很容易让大家联想起C语言的指针函数,这里就借此之便给大家继续探讨下很容易混淆的两个概念:函数指针和指针函数
函数指针:
指向函数首地址的指针变量称为函数指针(栗子)。
指针函数:
一个函数可以带回一个整型数据的值,字符类型值和实型类型的值,还可以带回指针类型的数据,使其指向某个地址单元。
备用视频下载
技术, IT技术, CPP, 视频教程
风险提示及免责条款
市场有风险,投资需谨慎。本文不构成个人投资建议,也未考虑到个别用户特殊的投资目标、财务状况或需要。用户应考虑本文中的任何意见、观点或结论是否符合其特定状况。据此投资,责任自负。本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处。如若内容有涉嫌抄袭侵权/违法违规/事实不符,请点击 举报 进行投诉反馈!
