函数返回局部自动变量的地址是严重的错误。
但是我们可以返回动态分配的内存的地址,因为使用操作符new分配的动态内存一直存在,
直到被delete销毁或者程序结束,不受函数作用域的影响。
#include <iostream>
using namespace std;double* treble(double);
char* fun1();
char* fun2();int main(){double* ptr(nullptr);ptr = treble(5.0);cout << "Result = " << *ptr << endl;delete ptr;    //释放为result动态分配的内存ptr = 0;cout << "_fun1() = " << fun1() << endl;cout << "_fun2() = " << fun2() << endl;system("pause");return 0;
}double* treble(double data){double* result = new double(0.0);
//  double* result(nullptr); //错误double num = 4;result = #*result = 3.0 * data;return result;
}
char* fun1(){char* str = "12345";cout << " fun1() = " << str << endl;return str;
}
char* fun2(){char str[] = "12345";cout << " fun2() = " << str << endl;return str;
}

函数fun1()中常量字符串"12345"的地址赋给str,因此str的值是字符串的地址。
而str是局部变量,函数返回值时,变量str被破坏,但是常量字符串并没有被破坏,
因此根据返回的地址可以找到字符串。
    函数fun2()中常量字符串"12345"赋给了数组str,str的值是数组str的地址。
而str是局部变量,函数返回值时,变量str被破坏,因此根据返回的地址得不到结果。

函数返回指针|函数返回地址相关推荐

  1. C++ 笔记(14)— 指针(指针声明、取地址、取值、new/delete、NULL指针、指针运算、指针数组、数组指针、指针传递给函数、从函数返回指针)

    1. 声明指针 指针是一个变量,其值为另一个变量的地址,即,内存位置的直接地址.就像其他变量或常量一样,您必须在使用指 针存储其他变量地址之前,对其进行声明. 指针变量声明的一般形式为: type * ...

  2. 【C 语言】字符串模型 ( 字符串翻转模型 | 抽象成业务函数 | 形参返回值 | 函数返回值 | 函数形参处理 | 形参指针判空 )

    文章目录 一.字符串翻转模型 业务函数 二.完整代码示例 一.字符串翻转模型 业务函数 将上一篇博客 [C 语言]字符串模型 ( 字符串翻转模型 ) 的代码 , 主要业务逻辑 , 抽象成函数 ; 字符 ...

  3. 函数指针、函数返回指针、const指针、指向const指针,指向const的const指针。

    ①函数指针 函数指针是指向函数的指针变量. 因而"函数指针"本身首先应是指针变量,只不过该指针变量指向函数.这正如用指针变量可指向整型变量.字符型.数组一样,这里是指向函数.如前所 ...

  4. C语言返回指针的函数,指针函数,让一个函数返回一个字符串

    C语言函数返回指针的函数(指针函数) 什么是返回指针的函数 一个函数可以返回一个整形值 字符型值 实型值 1.如果一个函数它的返回值是一个地址(是一个指针的话),这个函数是一个返回值是指针即指针函数. ...

  5. C七:指向函数的指针 ------ 函数指针(function pointer)

    函数具有可赋值给指针的物理内存地址,一个函数的函数名就是一个指针,它指向函数的代码.一个函数的地址是该函数的进入点,也是调用函数的地址.函数的调用可以通过函数名,也可以通过指向函数的指针来调用.函数指 ...

  6. 引用之函数返回值 函数的返回值为引用类型《三》

    一: 可以把函数定义为引用类型,这时函数的返回值即为某一变量的引用(别名),因此,它相当于返回了一个变量,所以可对其返回 值进行赋值操作.这一点类同于函数的返回值为指针类型. 由于函数调用返回的引用类 ...

  7. 【C++学习笔记】函数返回和函数重载

    一.返回类型和return语句   return语句终止当前执行的函数并将控制权返回到调用该函数的地方,return语句有两种形式: return: return expression; 1.1 无返 ...

  8. 指向函数的指针 ------ 函数指针(function pointer)

    函数具有可赋值给指针的物理内存地址,一个函数的函数名就是一个指针,它指向函数的代码.一个函数的地址是该函数的进入点,也是调用函数的地址.函数的调用可以通过函数名,也可以通过指向函数的指针来调用.函数指 ...

  9. 指针、函数、指针函数和函数指针

    指针 指针就是存储单元的地址,计算机是以字节为单元存储数据的,存储的地址就是指针. 好处:使程序更加简洁 int *p; //p代表指针,*p代表内容 &p地址 int *p;//四个字节的长 ...

最新文章

  1. 打算看的书或正在看的书
  2. 利用async和await异步操作解决node.js里面fs模块异步读写,同步结果的问题
  3. Nginx基于TCP的四层负载均衡介绍
  4. java setsolinger_java socket 的参数选项解读(转)
  5. service获取selinux权限_属性问题展开的selinux权限介绍
  6. arduino控制点阵屏与蜂鸣器_还在为遥控项目发愁?Arduino遥控套装解决你的所有问题(下)...
  7. LeetCode最长回文子串
  8. python用模块读取xml文件_Python之xml文档及配置文件处理(ElementTree模块、ConfigParser模块)...
  9. [免费专栏] Android安全之绕过SSL Pinning抓HTTPS数据
  10. 洛谷:P1878 舞蹈课(普及/提高-,stl,堆)
  11. golang: grpc: received message larger than max
  12. 企业为什么着急签三方_学校又在催我签三方了、三方协议很重要吗、签完三方能毁约吗……...
  13. 雨课堂网页端作业找不到的解决方法
  14. 从RCNN,Fast-RCNN到Fater-RCNN的演化过程
  15. chromedriver与chrome浏览器各版本对应下载
  16. writing | 如何写好一篇学术论文(三)标点符号的使用,改写段落
  17. 运动控制卡课程:固高,凌华,雷赛,(单一款学习时间45天,要求有C语言基础)凭良学校
  18. 苹果安全赏金计划玩不起?研究人员怒发其未修复漏洞的源代码
  19. 回顾“低代码”历史发展,是技术进步了还是倒退了?
  20. [Messy Note 1] 有关文本编辑语言及编码的一些概念

热门文章

  1. 使用struts2框架中3种客户端向服务端发送请求参数的方式
  2. 数字电压表的设计(at89c51)
  3. 品牌故事系列之一:APC成长传奇密码:永不停顿的创新
  4. Java中如何使用JSON进行文件解析
  5. 还在一个个写规则?来了解下爬虫的智能化解析吧!
  6. KPI绩效考核为何在国内不管用?
  7. 独家 | 利用深度学习和机器学习预测股票市场(附代码)
  8. 二维码扫码登录的背后 ...
  9. 前端开发面试题(转载)
  10. 索尼mp4变成rsv的修复方法