精华内容
下载资源
问答
  • 引用和取地址的区别

    2013-06-18 10:35:00
    1)引用在赋值=左边,而取地址在赋值右边,比如 int a=3; int &b=a; //引用 int *p=&a; //取地址 2)类型在一起引用变量在一起是取址。 举例同样如上,还有下例: ...

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

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

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

    1. int function(int &i)
    2. {
    3. }  //引用
    int main()
    {
        int a=1;
        int &b=a;
        int c=2;
        b=c;
        cout<<a<<b<<c<<endl;
    }
    //222


    展开全文
  • 废话少说,上例子:1、取地址在等号右边,引用在等号左边 int m = 3; int &n = m; //引用 int *p = &m; //取地址2、类型一起引用变量在一起取地址 int fuc(int &n); //引用

    废话少说,上例子:

    1、取地址在等号右边,引用在等号左边
    int m = 3;
    int &n = m; //引用
    int *p = &m; //取地址

    2、和类型一起的是引用,和变量在一起的是取地址
    int fuc(int &n); //引用

    展开全文
  • 引用和取地址区别

    2014-09-06 20:50:00
    一个是用来传值的 一个是用来获取首地址的 &...(取地址运算符)==>在给变量赋初值时出现在等号右边或在执行语句中作为一元运算符出现时 表示取对象的地址. 在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

    转载于:https://www.cnblogs.com/wuyuankun/p/3959802.html

    展开全文
  • 指针和引用的区别 对于指针来说,它是一个地址,这个地址是一个数值,那么就意味这个数值可以为0(空指针),也可以为其他,即指针可以不指向任何东西。 而对于引用来说,他是一个外号,外号一定是“某个存在物体”...

    一. 指针和引用的区别

    对于指针来说,它是一个地址,这个地址是一个数值,那么就意味这个数值可以为0(空指针),也可以为其他,即指针可以不指向任何东西。

    而对于引用来说,他是一个外号,外号一定是“某个存在物体”的外号,所以引用不能为空,即不能存在空引用。例如我们给小明起了个外号:明明,那我们说明明的时候,就是说小明。对引用的操作与对变量直接操作完全一样。

    根据以上可知指针和引用的一个重要不同:指针可以为空,引用不能为空。这就意味着我们拿到一个引用的时候,是不需要判断引用是否为空的,而拿到一个指针的时候,我们则需要判断它是否为空。这点经常在判断函数参数是否有效的时候使用。
    例如:

    void fun1(int *point)
    {
         // 为了代码的稳健和安全,我们需要判断指针是否有效,通常做法是判断指针是否为
         // 空,其他的判断就需要根据函数的具体功能来判断了
         if(!point)
         {
            return;
         }
         // 函数实现
    }
    
    void fun2(int &refence)
    {
         // 在这里,我们就不用担心refence是否为空
    }
    


    引用修饰函数参数还可以提高效率,例子如下:

    Class Object
    {// 实现省略,只需要知道我们在这里声明了一个类,在下面我们要将这个类的对象作为
     // 函数参数类型来使用};
    void fun1(Object obj)
    {
         // 此函数声明中,obj是值传递,会产生一个临时对象
    }
    void fun2(Object &obj)
    {
        // 我们不用检查obj是否为空,同时,使用引用传递,可以避免临时对象
    }
    void fun3(Object* obj)
    {
        if(!obj)...
        // 需要检查obj是否为空,同时,可以避免临时对象
    }

    我们根据前面的描述,还可以知道指针可以多次赋值,即在某时刻可以指向地址1,换个时候可以指向地址2,例如:

    int a = 0;
    int b = 1;
    int *point = NULL;
    point = &a;     // 在某个时刻,指针可以指向a
    point = &b;     // 换个时刻,指针可以指向b
    

    而引用则不同,引用只能在初始化的时候就赋好值,之后就不能改变了,用外号的例子来说就是"明明"这个外号在出现的时候就是代指小明,之后“明明”这个外号就绑在小明身上了,它不能过段时间换成小暗的外号。对reference_mingming(不是&reference_mingming)的操作,就是对xiaoming的操作。代码如下:

    int xiaoming = 1;
    int &refence_mingming = xiaoming;
    int xiaoan = 2;
    refence_mingming = xiaoan;           // error,引用不能换了
    

    由以上可以,当我们需要某个是否指向为空的时候,我们就需要使用指针了,还有指向的对象需要变化的时候,我们也需要使用指针。其他地方一般推荐引用。

    更多内容可以参见<more effective C++>第一条:引用和指针的区别。

    二. 取地址符&和引用的关键字的区别:

    作引用的关键字时:

    类型名  &  别名 = var;

    1.定义的时候必须初始化,即& 前面有类名或类型名,&别名后面一定带 “=” (在= 左边);

    2.&后面的别名是新的名字,之前不存在

    3. 引用在使用的时候,只用别名,不再使用&,也就是说对于一个引用,其关键字&只出现一次(在定义的时候)。

    4.C++中“引用”的概念就是要作为对象的别名,尽管其自身也会占用内存(此处不同意匿名用户,引用最终会被编译为指针,因此占用内存),但作为对象别名,它要拥有对象本身所有的功能,因此取地址时,取的是对象的地址而不是自己的地址——C++就是这样设计的,要不然很多事情你都干不了.

    5.对引用的操作与对变量直接操作完全一样,则对引用的取地址操作,等同于对变量的取地址,如下图中所示cout<<&c和cout<<&a是一样的。这个不太好理解(c本身也应该有地址吧,这是C++规定的),“&引用” 和“&取地址符”是一样的。

     

    &取地址时:

    如果&是取址运算符,也就意味着取一个变量的地址并付给指针变量。&后面紧跟的是变量(已存在);

    所以依据&后面的变量名是否已经存在,也很容易判断是引用还是取地址符。

    下面给出一个例子来说明引用和指针的区别,以及引用的地址的问题。

    int a=1;
    int &c=a;
    int *b=&a;
    int main()
    {
    	cout<<c<<endl;  //此时的c就是a,输出1
    	cout<<&c<<endl;  //输出的是c的存储地址也就是a的地址
    	cout<<&a<<endl; //和cout<<&c<<endl;和上一个代码一样
    	cout<<*&c<<endl;  //*直接取这个地址的结果,也就是输出1,也就是a也是c
    	cout<<b<<endl;   //b是指针,指向的是a的地址,输出就是a的地址
    	cout<<*b<<endl;  //指针指向地址里面结果,也就是输出1咯
    	system("pause");
    }
    

     

    展开全文
  • 一个是用来传值的 一个是用来获取首地址的 &(引用)==>出现在变量声明语句中位于变量左边时,表示声明的是引用. ...在C++中,既有引用又有取地址,好多人对引用和取地址不是很清楚,因此也无法区分...
  • 引用就是某一变量(目标)一个别名,对引用的操作与对变量直接操作完全一样。&作为引用的时候,必须在定义时候就进行初始化,若不进行初始化则会编译报错。 int c; int &ic=c; 即c身份被ic替代,对...
  • 在C++中,既有引用又有取地址,好多人对引用和取地址不是很清楚,因此也无法区分。其实他们的区别可以用一句话概括:和类型在一起的是引用,和变量在一起的是取址。下面我们通过实例具体了解一下 1)
  • 最近在学习C++中,看到也有一个&,但是这个是一个叫做引用的新特性,在C语言中也会用到&这个是取地址用的,具体区别是啥,我们去找找看: ...的区别 C++中引用(&)的用法应用实例 ...
  • 作用上不同 &作为引用是某一变量(目标)一个别名...类型在一起引用变量在一起是取址(表现形式为:引用在赋值=左边,而取地址在赋值右边) int a=3; int &b=a; //引用 int *p=&a;...
  • 一个是用来传值的 一个是用来获取首地址的&(引用)==>出现在变量声明语句中位于变量左边时,表示声明的是引用....在C++中,既有引用又有取地址,好多人对引用和取地址不是很清楚,因此也无法区分。其
  • 引用 引用就是某一变量(目标)的一个别名,对引用的操作与对变量直接操作完全一样。...&作为取地址用的时候,要跟指针联系在一起,因为指针就是用来存放地址的取地址就是你想取某变量(形参或者实
  • C++中引用&与取地址&的区别

    千次阅读 2013-04-02 22:33:08
    简单来说,一个是用来传值的 一个是用来获取首地址的 &(引用)==>出现在变量声明语句中位于变量左边时,表示声明的是...在C++中,既有引用又有取地址,好多人对引用和取地址不是很清楚,因此也无法区分。其实他们的区别
  • 引用取地址有什么区别

    千次阅读 2013-09-09 18:02:11
    所谓引用就是为对象起一个别名。例如变量b = &a,b就是a一个引用。...至于引用的用处,给你举一个简单例子,比如一个交换两个值函数swap(int a, int b),如果将两个值带进去,发生交换只是形参ab,因为函
  • C语言中取地址是把变量地址取出来,让一个指针指向这个地址C++中的引用是为变量起一个别名,这两个名字都是代表这个变量,这个别名是一个引用而不是指针 指针可以随时改变指向变量 ,而引用只能在初始化时候...
  • 但对于*,翻译为“解引用”,字面意思不好理解,即使看了后面内容才知道不过是“指针指向的地址的内容”,"*"的作用是引用指针指向的变量值,引用其实就是引用该变量的地址,“解”就是把该地址对应的东西解开,解...
  • 在c/c++中指针的作用基本都是一样的,但是c++增加了另外一种给函数传递地址的途径,这就是按引用传递(pass-by-reference),它也存在于其他一些编程语言中,并不是c++的发明。变量名实质上是一段连续内存空间的别名,...
  • C++引用取地址

    2020-03-22 00:04:41
    引用和取地址符都是用符号“&”来表示,很容易分不清。但是,他们有以下的区别。 1.定义时,“=”左边的基本都是引用,“=“右边的是取地址 int x = 0 ; int& a = x ; int* p = &x; 2.引用必须要...
  • 指针和引用的区别

    2019-07-21 10:50:15
    执行结果: 引用引用相当于“别名”,它的底层是依靠指针来实现的 引用一定要初始化 ...)常引用可以引用不能取地址的数据,因为数据会生成一个临时量,常引用引用引用临时量。 引用与指针的区别 指...
  • 01 什么是左值右值? 左值: 就是有确定内存地址、有名字变量,可以被赋值,可以在...对于常量,它可能被编码到机器指令“立即数”中,所以是没办法用“取地址&”运算符; 这也是C/C++标准规定。 返回
  • 引用和指针的区别

    2020-11-29 12:08:17
    只不过它不需要取地址,因为引用的取地址操作已经放在系统里了 引用就是一个不可以改变地址,但可以改变内容指针 #include <stdio.h> #include <stdlib.h> void swap(int a, int b) { int tmp = a; a =...
  • c++引用和指针的区别

    2016-11-01 00:07:12
    C语言中的&仅仅代表址,C语言中没有引用这个概念,C++中有,是C++C语言的区别之一。 所以C语言中的&指针的区别很明显。 C++中的引用与指针的区别 指向不同类型的指针的区别在于指针类型可以知道编译器解释...
  • 引用是什么 引用就是一个变量别名,其特殊性表现在一个引用在绑定了一个对象之后,就不会再做变化...指针指向一段内存表示内容,对指针取地址就能得到指向内存地址,指针能够改变指向对象并且可以指向空值 ...
  • 是去zhi地址的意思,这两个相辅相成。(2)用法不同。高级dao的c语言都是动态开辟内存,是使用mallocfree,这时就不用&了,因为取引用都是对于栈上的数据,在数据结构中,都是在堆上开辟数据容量。(3)语言...

空空如也

空空如也

1 2 3 4 5 ... 17
收藏数 330
精华内容 132
关键字:

引用和取地址的区别