c語言值函數三種傳參的區別


1.按值傳遞

   使用這種方式,調用函數本身不對實參進行操作,也就說,即使形參的值在函數中發生了變化,實參的值也完全不會受到影響,仍為調用前的值。這相當於把實參賦值一份給形參,然后調用內存回收。

  int sum(int x,int y){

    return x+y;

  }

  int mian(){

    int result=sum(2,3);//通過直接對sum傳遞參數

    printf("%d",result);

    return 0;

  }

  

2.地址傳遞

  地址傳遞與按值傳遞的不同在於,它把實參的存儲地址傳送給對應的形參,從而使得形參指針和實參指針指向同一個地址。因此,被調函數中對形參指針所指向的地址中內容的任何改變都會影響到實參。

  #include<stdio.h>

  int sum(int *x,int *y){

    return *x+*y;//表示獲取x中的內容+y中內容

  }

  int main(){

    int a,b;

    a=2;b=3;

    int result=sum(&a,&b);//通過地址對sum傳遞參數

    printf("%d\n",result);

    return 0;

  }

 

3.引用傳遞

    以引用為參數,則既可以使得對形參的任何操作都能改變相應的數據,又使得函數調用顯得方便,自然。引用傳遞方式是在函數定義時在形參前面加上引用運算符“&”。引用相當於實參的別名,他和實參是同一個變量或數值,它的改變就是實參的改變。

  int sum(int &x,int &y){     //定義引用類型

    return x+y;

  }

  int  main(){

    int a,b;

    a=2;b=3;

    int result=sum(a,b);//通過引用對sum傳遞參數

    printf("%d\n",result);

    return 0;

  }

 

 

轉載自:https://blog.csdn.net/jiahaowanhao/article/details/79533520


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM