现在的位置: 首页 > 综合 > 正文

小火来讲C++ 引用和指针的区别

2018年05月05日 ⁄ 综合 ⁄ 共 1557字 ⁄ 字号 评论关闭
            大家好.又和大家见面了.最近因为公司比较忙..没时间和大家讨论问题...但是还是有许多发烧友过来和俺提问..我没办法一 一 

回答,只能抽取一些问的比较多的了来回答大家..在此也请各位多多包涵...废话不多说..进入主题

                  在所有的面向对象语言中都有引用这个概念..在C++中所有的引用都能用指针去实现..可是问题就来了..指针和引用到底有什么

区别?         

                 我们来分析下..指针的概念.    指针是什么? 这就要说下内存硬件了..话说.当内存条插到电脑上...操作系统就管理这个内存条.为

这个内存条分配很多的小单元格子,每一个单元格子都有一个标示位(这就是我们说的地址),而指针就是地址...我们在C/C++中所定义的都是

指针变量,该变量就是用来保存地址的(指针),

               我们在来分析下.引用的概念...什么是引用? 引用其实也是引用对象的地址。。。也就是说 A 引用 B,那么A和B所指向的就是同

一个对象,既然是指向都是同一个对象。。那么和指针一样。A修改了值。B也就是修改了

             上面我说的两个概念看起来都差不多有共同的特征。那么我们下面就用实例来帮助大家来理解这两个概念。

              他们的区别有两点

              1.指针变量是可以定义时不初始化的,而引用只能在定义的时候初始化(必须)

              2. 指针变量所指向的内存空间(地址)是可以改变的,引用是不能改变的(意思是 初始化指向谁,那么到死也就是指向谁)          
              3.指针变量在16位机器上(或者某些编译器)所占的内存空间是2个字节,在32的是4个字节,而引用所占的字节数是定义的是所

引用对象的字节大小。就是说   int a=10,int &b=a;  a是4个字节,b也是4个字节。。具体要看定义的类型

  

我们首先来定义三个变量

            int a=10;
      
             int b=20;     

            int  *c=&a;//给指针初始化。。

然后我们来修改a的值   

          *c=a+b;//这个时候a的值就应该等于30了

那么来修改c指针变量

          c=&b;//这个时候指针变量指向的就b  那么  *c的值就是20了。。。

下面我们来引用,我们也定义三个变量

     int a=10;
    
     int b=20;

     int &c=a;//让C去引用a  那么C就是A

    我们来修改a的值

     c=a+b;  //这个时候c=30,那么a=30; 

  我们在修改c的值

    c=b; //这个时候c=20,那么a=20;

//我们这里就不能 写成 (&c=b),这样会报错

那么我们总结下:引用只能在初始化赋值一次,就是给所引用的对象取一个别名。
                                
指针变量是可以改变指向内容的。访问对象的时候只能间接访问.(很重要)
 具体怎么用。我相信大家看懂我所说的以后就可以自由发挥了   
                             

           
             
                                                                                                                                                               原创作品,
                                                                                                                      
                                                                                                                                                               欢迎转载.

                                                                                                                                                               切勿抄袭.


抱歉!评论已关闭.