[转载]C++中 引用&与取地址&的区别

一个是用来传值的 一个是用来获取首地址的

&(引用)==>出现在变量声明语句中位于变量左边时,表示声明的是引用.
     
例如: int &rf; // 声明一个int型的引用rf.
&(取地址运算符)==>在给变量赋初值时出现在等号右边或在执行语句中作为一元运算符出现时
                  表示取对象的地址.

在C++中,既有引用又有取地址,好多人对引用和取地址不是很清楚,因此也无法区分。其实他们的区别可以用一句话概括:和类型在一起的是引用,和变量在一起的是取址。下面我们通过实例具体了解一下

1)引用在赋值=的左边,而取地址在赋值的右边,比如

  1. int a=3;
  2. int &b=a;        //引用
  3. int *p=&a;        //取地址

2)和类型在一起的是引用,和变量在一起的是取址。 举例同样如上,还有下例:

  1. int function(int &i)
  2.  
  3. {
  4.  
  5. }  //引用

3)对于vector,上面2条同样适合

    1. vector<int> vec1(10,1);  //initialize vec1: 10 elements, every element‘s value is 1
    2. vector<int> &vec2 = vec1; // vec2 is  reference to vec1
    3. vector<int> *vec3 = &vec2; //vec3 is addresss of vec1 and vec2
时间: 2024-09-29 00:56:06

[转载]C++中 引用&与取地址&的区别的相关文章

引用与取地址

一个是用来传值的 一个是用来获取首地址的 &(引用)==>出现在变量声明语句中位于变量左边时,表示声明的是引用.     例如: int &rf; // 声明一个int型的引用rf.&(取地址运算符)==>在给变量赋初值时出现在等号右边或在执行语句中作为一元运算符出现时                  表示取对象的地址. 在C++中,既有引用又有取地址,好多人对引用和取地址不是很清楚,因此也无法区分.其实他们的区别可以用一句话概括:和类型在一起的是引用,和变量在一起的

引用和取地址区别

一个是用来传值的 一个是用来获取首地址的 &(引用)==>出现在变量声明语句中位于变量左边时,表示声明的是引用.     例如: int &rf; // 声明一个int型的引用rf.&(取地址运算符)==>在给变量赋初值时出现在等号右边或在执行语句中作为一元运算符出现时                  表示取对象的地址. 在C++中,既有引用又有取地址,好多人对引用和取地址不是很清楚,因此也无法区分.其实他们的区别可以用一句话概括:和类型在一起的是引用,和变量在一起的

数组名和数组名取地址的区别

数组名和数组名取地址的区别 以下代码会打印出什么样的日志呢? [cpp] view plaincopy #include <stdio.h> int a[2] = {1,2}; int main(){ printf("a = %p\n", a); // I printf("&a = %p\n", &a); // II printf("a + 1 = %p\n", a + 1);// III printf("&

C语言函数名以及取地址的区别和联系

有时看到如下的代码: /*****************************/ #include <stdio.h> #include <string.h> #include <stdlib.h> void test() { printf("123456\n"); } int main(int argc, char *argv[]) { printf("0x%x\n",test); printf("0x%x\n&q

PHP传值和传引用、传地址的区别

传值,   是把实参的值赋值给行参   那么对行参的修改,不会影响实参的值 传地址   是传值的一种特殊方式,只是他传递的是地址,不是普通的如int   那么传地址以后,实参和行参都指向同一个对象 传引用   真正的以地址的方式传递参数   传递以后,行参和实参都是同一个对象,只是他们名字不同而已   对行参的修改将影响实参的值 仅讨论一下值传递和引用:   所谓值传递,就是说仅将对象的值传递给目标对象,就相当于copy:系统将为目标对象重新开辟一个完全相同的内存空间.   所谓引用,就是说将对

转载JQuery 中empty, remove 和 detach的区别

转载 http://www.cnblogs.com/lisongy/p/4109420.html .empty()  描述: 从DOM中移除集合中匹配元素的所有子节点. 这个方法不接受任何参数. 这个方法不仅移除子元素(和其他后代元素),同样移除元素里的文本.因为,根据说明,元素里任何文本字符串都被看做是该元素的子节点.请看下面的HTML: <div class="container"> <div class="hello">Hello<

MyBatis中引用变量符号$与#的区别解析

例子 假设我们要通过创建时间create_time查询数据库表product里的具体条目 如果要查询创建时间大于等于"2019-01-29"的条目,那么SQL查询语句应是: select * from product where create_time >="2019-01-29",这时候返回了正确的数据 用mybatis框架查询对应写法如下: @Select({ "SELECT * ", "FROM product WHERE

C/C++中的取地址与引用

取地址和引用都采用&的标识符,很容易让人造成误会. 就c/C++而言.引用只是C++中的知识,而取地址是两者共有的. 取地址: 在第6行中我定义了一个指向int类型的指针p,运用&a获取a的地址,并将a的地址赋予它,即p指向a所在的空间. 在第7行中取p所指向空间的值(*:有个高端名字叫解引用)输出. 引用: 在第6行我定义了一个引用b,并将a赋予b.其实质就是给a取了一个小名叫b.对a操作就是对b操作,如果改变b的值(eg.b=20),那么a的值也相应改变(a也会等于20) 从第7.8行

C语言学习笔记 (002) - C++中引用和指针的区别(转载)

下面用通俗易懂的话来概述一下: 指针-对于一个类型T,T*就是指向T的指针类型,也即一个T*类型的变量能够保存一个T对象的地址,而类型T是可以加一些限定词的,如const.volatile等等.见下图,所示指针的含义: 引用-引用是一个对象的别名,主要用于函数参数和返回值类型,符号X&表示X类型的引用.见下图,所示引用的含义: 2.指针和引用的区别 首先,引用不可以为空,但指针可以为空.前面也说过了引用是对象的别名,引用为空--对象都不存在,怎么可能有别名!故定义一个引用的时候,必须初始化.因此