函數的形參(非引用形參、指針形參、引用形參)

https://wenku.baidu.com/view/b7794a6b011ca300a6c3904a.htmlhtml

1、非引用形參

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

      這是最普通的形參方式,當函數被調用時,實參的副本初始化形參,函數並無訪問調用所傳遞的實參,所以v1+=1不會修改實參的值。對v1的操做只是修改了實參的一個副本。

2、指針形參

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

      使用指針作爲函數的形參,一樣指針的值(指針的地址)不會由於p+=1而受到影響,可是指針指向的地址的值(*p)將會改變。因此要想修改實參的值,能夠使用這種方法。可是還有一種更安全更天然的方法-引用形參

3、引用形參

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

      引用形參直接關聯到其所綁定的對象,而非這些對象的副本。 因此這種方法能夠修改實參的值,並且更加直觀。

三種方法實例代碼:ios

//liujiajia
//2008-7-14 
#include<iostream>
using namespace std;
void add1(int);
void add2(int*);
void swap(int &,int &);
int main(void)
{
    int n=10;
    cout<<"調用add1()以前n="<<n<<endl;
    add1(n);
    cout<<"調用add1()以後n="<<n<<endl;
    
    int *p=&n;
    
    cout<<"調用add2()以前n="<<n<<",p="<<p<<endl;
    add2(p);
    cout<<"調用add2()以後n="<<n<<",p="<<p<<endl;
    
    int a=1,b=2;
    cout<<"調用swap()以前a="<<a<<",b="<<b<<endl;
    swap(a,b);
    cout<<"調用swap()以後a="<<a<<",b="<<b<<endl;
    
    getchar();
}

//非引用形參 
void add1(int v1)
{
    v1+=1;
}

//指針形參
void add2(int *p)
{
    *p+=1;
    p+=1;


//引用形參
void swap(int &a,int &b)
{
    int temp=a;
    a=b;
    b=temp;
}安全

相關文章
相關標籤/搜索