引用、指针、传值

来源:互联网 发布:mac版qq上传群文件 编辑:程序博客网 时间:2024/06/06 05:46
 

一、非引用形参

      void add1(int v1)
      {
          v1+=1;
      }

      这是最普通的形参方式,当函数被调用时,实参的副本初始化形参,函数并没有访问调用所传递的实参,因此v1+=1不会修改实参的值。对v1的操作只是修改了实参的一个副本。

二、指针形参

      void add2(int *p)
      {
          *p+=1;
          p+=1;
      }

      使用指针做为函数的形参,同样指针的值(指针的地址)不会因为p+=1而受到影响,但是指针指向的地址的值(*p)将会改变。所以要想修改实参的值,可以使用这种方法。但是还有一种更安全更自然的方法-引用形参

三、引用形参

      void swap(int &a,int &b)
      {
          int temp=a;
          a=b;
          b=temp;
       }

引用形参直接关联到其所绑定的对象,而非这些对象的副本。 所以这种方法可以修改实参的值,而且更加直观。