什么是值传递、引用传递、指针传递
来源:互联网 发布:pscc2017 for mac破解 编辑:程序博客网 时间:2024/04/29 08:49
一、变量、引用、指针
1、变量
int a ;
当C++编译器,读到我们写的这一行,它为我们做了什么事?
要知道,在硬件层,内存这个东西是没有名字的,唯一的标记就是地址。
所以,C++编程器一定要做两件事。在内存中划分一段以供使用的区域。为了方便使用这段区域,为其起一个名字。
对此我们可以这样理解: 第一行,C++编译器为我们划分了一段内存块,这段内存的大小通过分析类型名“int"来决定。而"a"相当编程器为这段内存起的一个名字,也就是一个标记。
2、引用
int& b = a;
声明变量,会创建一段内存块,而引用不会创建内存空间。
引用不负责分配空间,引用和‘变量名’一样,只是一段内存的一个标记。之所以引用必须在声明时初始化就在于此。
b和a这两者做为标记他们的内容其实是相同的,他们都是指向了同一段地址。所以书中说“引用只是变量的一个别名”。
为什么说使用引用没有内存消耗也就是这个原因。因为不管是‘a'也好,'b'也好,都只是编程器时期所使用的标记。程序在执行过程中,都会转换为机器码。(具体如何工作的不是这里可以讨论的。因为我也不知道啊- -)
3、指针
int* b;
这一行,编译器做的工作和创建一般变量没什么不同。同样是创建了一段内存块。只不过不论类型名是什么。创建的肯定是一段4字节的空间(32位机上是4字节)。
这段空间存放一段地址数据。如何为其赋值,就是C++编译器决定的。
二、值传递、引用传递、指针传递
接下来分析参数传递就容易多了,值传递无无疑,将传递的变量拷贝一份。对象传递时将自动调用拷贝构造。
指针传递,就是将指针的值进行传递。
而引用传递,实际上传递的是一个‘标记’。因为这个‘标记’并不占用内存空间,所以并无资源消耗。
编程免不了数据间的传递,传递的时候要避免多余的内存开销。
- 什么是值传递、引用传递、指针传递
- c++ 值传递 引用传递 指针传递
- 值传递、指针传递和引用传递
- 值传递 引用传递 指针传递
- 值传递,引用传递,指针传递
- 值传递,指针传递,引用传递
- C++值传递,指针传递,引用传递
- 值传递、指针传递、引用传递
- 值传递,指针传递,引用传递
- 值传递、指针传递、引用传递
- C++ 值传递、指针传递、引用传递
- 整形 值传递 引用传递 指针传递
- 值传递、指针传递、引用传递
- C++ 值传递 指针传递 引用传递
- 值传递,引用传递,指针传递
- 指针传递 引用传递 值传递
- 值传递引用传递及指针传递
- 值传递,引用传递、指针传递
- By 2010, mature, don't childish
- 地铁PIS系统SDI接口和HDMI接口应用专题研究报告
- 独立博客
- 精益求精--卓越的互联网产品设计与管理
- 菜鸟入门 认识C#中的委托和事件
- 什么是值传递、引用传递、指针传递
- 什么时候用表达式方法声明函数
- 关于EXPORT_SYMBOL
- 测试Live Writer
- UML试题大集合
- S60 有用的系统方法
- 使用16进制输出网卡地址
- HttpURLConnection碰到连续302跳转的问题
- CFileDialog如何不更改当前目录