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

&(引用)==>出现在变量声明语句中位于变量左边时,表示声明的是引用.
     
例如: 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

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

  1. C++中 引用&与取地址&的区别

    微信公众号[程序员江湖] 作者黄小斜,斜杠青年,某985硕士,阿里 Java 研发工程师,于 2018 年秋招拿到 BAT 头条.网易.滴滴等 8 个大厂 offer,目前致力于分享这几年的学习经验. ...

  2. C++中引用与取地址

    所谓引用就是为对象起一个别名.例如变量b = &a,b就是a的一个引用.对b的任何操作等同于对a的操作,也就是说,如果你改变了b的值,同时a的值也会发生改变.b就是a的另外一个名字,他们实质是 ...

  3. 详解C++中指针(*)、取地址(&)、解引用(*)与引用(&)的区别 (完整代码)

    一.初步了解--指针与取地址 先看程序: #include<cstdio> int main(void) { int num = 7; int *p = &num; printf( ...

  4. C++中引用传递与指针传递区别

    C++中引用传递与指针传递区别 在C++中,指针和引用经常用于函数的参数传递,然而,指针传递参数和引用传递参数是有本质上的不同的: 指针传递参数本质上是值传递的方式,它所传递的是一个地址值.值传递过程 ...

  5. 搬运1:关于对C语言中数组名取地址加减等操作的一点探究

    对于数组名取地址强制转换的操作 偶然在晚上学了C语言指针后网页闲逛找题时,被一个数组名取地址搞糊涂了,在自己试验加探索后我稍微悟了一点东西. 代码如下: #include<stdio.h> ...

  6. 转:C++中引用传递与指针传递区别

    从概念上讲.指针从本质上讲就是存放变量地址的一个变量,在逻辑上是独立的,它可以被改变,包括其所指向的地址的改变和其指向的地址中所存放的数据的改变. 而引用是一个别名,它在逻辑上不是独立的,它的存在具有 ...

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

    有时看到如下的代码: /*****************************/ #include <stdio.h> #include <string.h> #inclu ...

  8. C语言中指针和取地址符&的关系

    一 概念定义: 严格说起来,应该这么讲:指针存的是地址,而&运算符是取变量的地址. 指针原理: 其实计算机中的内存就像一个个抽屉(一兆内存就相当于1百万个抽屉),每个抽屉都有一个编号,用于存放 ...

  9. c++ 引用& 与 取地址&

    https://www.csdn.net/gather_2e/NtjaYgzsNTctYmxvZwO0O0OO0O0O.html 还有指针和取值: int& a = b; int *c = & ...

随机推荐

  1. JavaScript基础:数据类型的中的那些少见多怪

    原文:JavaScript基础:数据类型的中的那些少见多怪 Javascript共有6种数据类型,其中包括3个基本数据类型(string,number,boolean).2个特殊数据类型(undefi ...

  2. sql按照in中的顺序进行排序 mysql

    经测试以下三种情况,都可以. SELECT a.id,a.name as goods_name,a.logoimg,b.name as store_name FROM sh_goods a LEFT ...

  3. Linux Kernel 'MSR' Driver Local Privilege Escalation

    本站提供程序(方法)可能带有攻击性,仅供安全研究与教学之用,风险自负! // PoC exploit for /dev/cpu/*/msr, 32bit userland on a 64bit hos ...

  4. iconv gbk字符转utf8字符

    直接上代码 bool gbk2utf8(const char* src, char* dest, size_t inlen) { const char *inbuf = src; size_t out ...

  5. HDU1247 Hat’s Words(Trie的动态内存版本)

    Hat’s Words Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Tota ...

  6. [Locked] Meeting Room I && II

    Meeting Room Given an array of meeting time intervals consisting of start and end times [[s1,e1],[s2 ...

  7. SRM 600(1-250pt,500pt)

    DIV1 250pt 题意:给定一个vector<int>A,若能从里面选出一些数,使得他们按位或的值为x,则称x为吉利数.给定k,问最少要从A里面去掉多少个数,才能使k变为不吉利数. 解 ...

  8. Unable to locate the Javac Compiler 解决办法

    在使用eclipse对maven项目进行编译打包(Run As->Maven install)时,报以下错误:[ERROR] Failed to execute goal org.apache. ...

  9. Java 判断一段网络资源是否存在

    package cn.ycmedia.common.utils; import java.io.InputStream; import java.net.URL; import java.net.UR ...

  10. [Javascript] Object.assign()

    Best Pratices for Object.assign: http://www.cnblogs.com/Answer1215/p/5096746.html Object.assign() ca ...