函數傳值、傳指針、傳引用、傳指針的引用

傳值

function(int A);//A形參
int main(){
  function(a);//a實參
  return 0;
}

系統在內存裏生成一個a的複製。

傳指針

function(int* p2);//p2形參
int main(){
  int* p = a;
  function(p);//p實參
  return 0;
}

實參p是一個指向a的指針,傳指針其實就是傳值,只不過別人傳int類型的值(一個數),它傳指針類型的值(指針類型的值就是一塊內存的地址)。系統生成一個p的複製p2,p2跟p一樣指向同一片內存塊。

可見函數對p2的任何操作都不會影響到p。

指針p保存的是a的地址(&a),通過*p來取得其所指向的值a。

傳引用

function(int &A);//A形參
int main(){
  function(a);//a實參
  return 0;
}

傳引用傳遞的是實參a本身,而不是實參的一個拷貝,形參的修改就是實參的修改。系統直接使用原始變量的內存空間。

傳指針的引用

function(int* &p2);//p2形參
int main(){
  int* p = a;
  function(p);//p實參
  return 0;
}

結合前兩個易得。

 

 

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章