C与C++之引用与指针

来源:互联网 发布:淘宝白搜是什么 编辑:程序博客网 时间:2024/04/29 03:41
      一.为什么C++要使用引用。
       在C语言中函数传参有俩中方式(传值和传址),在函数调用过程中会生成临时变量用形参代替,最终把实参传递给形参。优点:避免了函数调用的副作用,但无法改变形参的值。
     void swap(int right ,int left)
{
     int temp = right;   //形参不可改变,
          right = left;
          left = temp;
}
      要改变形参的值只能使用指针
  void swap (int *_pleft , int * _pRight)   
{
      assert (NULL != _pleft && NULL != _pRight);
       int iTemp = * _pleft;
       *_pleft = * _pRight;
       *_pRight = iTemp;
}
   但指针不安全因此C++中使用引用。
 二.引用
     引用:即给已存在变量另取一个别名(类似于人的外号,但人还是这个人),即引用和该变量使用同一块内存空间
    类型 &变量(对象名) = 引用变量名  (引用的类型和变量的类型必须是同一种类型)
      void TestRef()
{
int iNum0 = 10;
int &iNum1 = iNum0;
int &iNum2 = iNum1;
//  int &iNum3;          // 定义引用时必须进行初始化
int &iNum6 = iNum0; //一个变量可以有多个引用
int iNum7 = 20;
//   &iNum6 = iNum7;   // 引用一旦定义,就不能够在改变
}
三.引用和指针的区别
   1、引用在定义时必须初始化,指针没有要求。// int &iNum1=iNum0;
   2、一旦一个引用被初始化为指向一个对象,就不能再指向其他对象,而指针可以在任何时候指向任何一个同类型对象    //int  &iNum2 = iNum1;  即&iNum2不能指向其他对象
   3、没有NULL引用,但有NULL指针。
  4、在sizeof中含义不同:引用结果为引用类型的大小(int 、double、 char、、、、、 ),但指针始终是地址空间所占字节个数。
  5、引用自加改变变量的内容(引用改变的是变量的值),指针自加改变了指针指向(指针改变的是变量的地址)
  6、有多级指针,但是没有多级引用(引用只能指向一个对象)
  7、引用比指针使用起来相对更安全
1 0
原创粉丝点击