返回函数局部变量的指针和引用是不允许的,容易造成野指针。不管是通过返回值或者出参返回局部变量的指针都是不允许的。

但针对各种情况,可以具体研究一下返回函数指针和引用的异常情况。

例子1:

#include <iostream>
using namespace std;

void ChangePoint(int **p2)//入参类型为指向指针的指针。
{
 int num = 8;
 *p2 = &num;/
 p3 = ChangePoint3();
 ChangePoint(&p2);
 cout << *p1 <<' '<< a << ' '<<*p2 << ' '<< *p3;
 return 0;
}

不能返回局部变量的引用给一个引用变量。但是如果返回引用给一个相关的非引用变量的话是可以的。

例子2:

#include <iostream>

using namespace std;

int& fun()
{

int i = 100;

return i;

}

void test()
{
 int i = 0;
}

int main()
{
// int& a = fun();//返回的是局部变量i的引用,即地址,有问题。相当于int &a = i;  int a=fun();//返回的是局部变量i的值,没有问题,相当于int a = i;

// test(); //此处由于fun后没有其他代码,所以输出值没问题,若将test函数打开,则a的值会有问题。

cout << a << endl;

return 0;
}

可以参考:

http://topic.csdn.net/u/20120729/11/823C8AE6-691D-4BAB-A874-971836CF00C4.html

返回函数局部变量的指针和引用相关推荐

  1. c++为什么不能用局部变量的指针或者引用作为函数的返回值

    函数的调用以及完成调用的过程是函数在栈内存中入栈和出栈的过程,当函数被调用 时,函数入栈,当函数调用完成之后,系统负责把函数占用栈内存自动释放,所以存在 栈中的局部变量的占用的内存得到释放,如果此时把 ...

  2. Python函数传入的参数是否改变(函数参数、指针、引用)

    不可变对象:Number, String, Tuple, bool 可变对象:List, Set, Dict 是可以改变内部的元素 实例1(str类型): def changestr (str):st ...

  3. C++编程进阶4(C++中的强制类型转换运算符、不要返回自定义类内部成员的指针,引用和迭代器)

    十五.C++中的强制类型转换 C语言中的强制类型转换方式有两种 T i = (T)exp; T i = T(exp); 这两种方式没有差别,C++中也支持这两种方式,但是和C++中的强制类型转换运算符 ...

  4. C++ 学习之旅(8)——一文搞懂指针、引用、函数参数的传值调用、指针调用和引用调用

    废话少说,直接上代码: #include <iostream>int main() {int a = 5;int* ptr = &a;int& ref = a;std::c ...

  5. 面试准备每日五题:C++(三)——全局局部变量、内存分配、strcpysprintfmemcpy、函数指针、引用

    文章目录 1. 全局变量和局部变量有什么区别?是怎么实现的?操作系统和编译器是怎么知道的? 2. 简述C.C++程序编译的内存分配情况 3. 简述strcpy.sprintf 与memcpy 的区别 ...

  6. C++ const关键字的总结(全局/局部变量、修饰指针和引用、成员函数和数据成员、修饰类对象、const与宏定义的区别、Static与Const的区别)

    const关键字 const关键字 1.什么是const 2.使用原理 2.1.const全局/局部变量 2.2.cosnt修饰指针和引用 2.3.const修饰函数参数 2.4.const修饰函数返 ...

  7. 返回局部变量或临时变量的地址_C++的函数不可以返回局部变量的指针

    很多童鞋在编写函数返回指针的时候,常常会出现一些列内存错误.当然这可能是很多原因造成的,但是有一个原因就是返回的是局部变量的指针.先给出结论C++的函数不可以返回局部变量的指针. 首先要明确局部变量的 ...

  8. 函数返回值为 const 指针、const 引用

    函数返回值为 const 指针,可以使得外部在得到这个指针后,不能修改其指向的内容.返回值为 const 引用同理. class CString {private:char* str; public: ...

  9. 不能返回函数内部new分配的内存的引用_JNI开发之局部引用、全局引用和弱全局引用(三)...

    阿里P7移动互联网架构师进阶视频(每日更新中)免费学习请点击:https://space.bilibili.com/474380680 这篇文章比较偏理论,详细介绍了在编写本地代码时三种引用的使用场景 ...

最新文章

  1. Android 急速发布项目到 JitPack
  2. HDFS的API操作-创建文件和文件夹
  3. VC树控件的简单使用
  4. Subst DOS命令
  5. 解决Redmi 6 pro底部出现黑边问题
  6. 实现简单的字符串队列
  7. 如何在 Mac 上关闭睡眠模式?
  8. AWK学习笔记八:AWK内置函数
  9. atitit.故障排除--- 当前命令发生了严重错误。应放弃任何可能产生的结果sql server 2008
  10. stm32编程初始化设备步骤
  11. Photoshop渐变工具+羽化使用
  12. 第二章 马原刷题(1)
  13. vue中Axios的封装和API接口的管理
  14. 欧几里得算法(求解最大公约数的优质方法)以及原理拓展
  15. 代码托管平台的待办事项你知道吗 ?|GitCode
  16. SSAS Tabular
  17. 短视频美颜sdk为什么会爆火?
  18. (九)数字后端之静态时序分析STA
  19. 聊聊如何度过寒冬(公司篇)
  20. php 扩展开发,PHP扩展开发,做一个属于自己的PHP扩展吧

热门文章

  1. 【C 语言】结构体 ( 结构体浅拷贝 )
  2. 【Binder 机制】Native 层 Binder 机制分析 ( service_manager.c | 开启 Binder | 注册 Binder 进程上下文 | 开启 Binder 循环 )
  3. 【集合论】有序对 ( 有序对 | 有序三元组 | 有序 n 元祖 )
  4. 微信小程序 wx:key 提示-解决
  5. phpmyadmin 主机名自动补全
  6. js_加入收藏夹功能
  7. mongodb first
  8. 微信公众平台入门开发教程.Net(C#)框架
  9. 云计算之路-试用Azure:数据库备份压缩文件在虚拟机上的恢复速度测试
  10. ALGO-185 Trash Removal