函数传值、传指针、传引用、传指针的引用

传值

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;
}

结合前两个易得。

 

 

 

 

 

 

 

 

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