引用和取地址区别

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

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

引用和取地址区别的相关文章

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

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

引用与取地址

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

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行

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

数组名和数组名取地址的区别 以下代码会打印出什么样的日志呢? [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("&

数组名和数组名取地址、指针数组和数组指针的区别

一,首先我们先分析下数组名和数组名取地址的区别. 我们都知道数组名是数组的首地址,然而对数组名取地址又是什么那?看下面一段程序你就会懂的. #include "stdafx.h"     #include<stdio.h>    using namespace std;    void main()    {          int a[5];          printf("%d\n", a);          printf("%d\n

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

引用与指针的区别

引用:相当于给一个变量取的别名,它本身不是一种数据类型,因此不战用存储空间,不能建立数组的引用 引用作为函数参数:当发生函数调用时,用引用作为参数,在内存中并不会产生实参的副本,也不会给引用这个形参分配空间, 而是直接对实参进行操作,但如果用一般变量作为函数参数,则会给它分配空间,并且作为实参的副本,如果 传递的是对象,还将调用拷贝构造函数 引用与指针的区别:相同点:引用与指针都会导致实参对象值的改变 不同点:a.引用不用分配空间,指针要分配空间,且指针作为形参在调用时,必须用变量的地址作为实参

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

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

[转载]C++中引用与指针的区别(详细介绍)

本文转载自http://www.cnblogs.com/tracylee/archive/2012/12/04/2801519.html C++中的引用与指针的区别 指向不同类型的指针的区别在于指针类型可以知道编译器解释某个特定地址(指针指向的地址)中的内存内容及大小,而void*指针则只表示一个内存地址,编译器不能通过该指针所指向对象的类型和大小,因此想要通过void*指针操作对象必须进行类型转化.     ★ 相同点: 1. 都是地址的概念: 指针指向一块内存,它的内容是所指内存的地址: 引