您的位置:首页 > 其它

函数参数传递的三种基本方式

2013-04-15 21:01 323 查看
//============================================================================

// Name : Test_Reference_Pointer_Transmit_Fuction.cpp

// Author :

// Version :

// Copyright : Your copyright notice

// Description : 这个程序主要 测试 引用的作用 和函数 指针的传递

//============================================================================

//形参:用于接收传递值的变量。 实参:传递给函数的值。

/* (1)、将变量名作为实参和形参。传递给形参的的时变量的值,传递是单向的。在函数内部,经过运算后,

* 形参的值改变之后,并不能传递回实参。这里的根本原因就是形参和实参不是同一个存储单元。

*(2)、传递变量的指针。形参是指针变量,实参是一个变量的地址,调用函数时,形参指向实参变量单元

* 总结:(1)和(2)都是值传递,(1)传递的时值的直接传递 (2)传递的是地址值的传递,就是将原来

* 原来的数据的地址传递到形参。其实质都是值传递的方式。是c语言的标准方式

*(3)、引用型变量作为函数的形参是C++的独有传递方式。引用就是给一个变量声明另一个别名,而不是变量地址。

*/

#include <iostream>

#include<iomanip>

using namespace std;

int main() {

cout << "!!!Test_Reference_Pointer_Transmit_Fuction!!!" << endl; // prints

/************************************************************************************/

int a;

a=10;

//声明引用变量的时候,必须要同时使之初始化。

int &m=a;//这里的意义就是:变量b具有变量a的地址。他的值并不是地址值,不是取地址的意思。引用的初始化 只能用一次哦!!!

//引用的重要作用在于 作为函数的参数传递。

a=a*a;

cout<<a<<setw(6)<<m<<endl;//这里 a的值改变 则m的值也将会改变

/******************************变量名作为实参和形参************************************/

void swap1(int, int);

int i=3,j=5;

swap1(i,j);

cout<<i<<setw(6)<<j<<endl;

/********************************传递变量的指针*************************************/

void swap2(int *,int *);

int p=3,q=5;

swap2(&p,&q);

cout<<p<<setw(6)<<q<<endl;

/******************************引用的传递******************************************/

void swap3(int &,int &);

int z=3,x=5;

swap3(z,x);

cout<<z<<setw(6)<<x<<endl;

/********************************************************************************/

return 0;

}

/**************************函数声明*********************************************/

void swap1(int a,int b)

{

int temp;

temp=a;

a=b;

b=temp;

}

void swap2(int *p1,int *p2)

{

int temp;

temp=*p1;

*p1=*p2;

*p2=temp;

}

void swap3(int &a,int &b)

{

int temp;

temp=a;

a=b;

b=temp;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: