参数传递方式有哪些( 三 )


2. 如果形参是类的对象 , 利用值传递的话每次都要调用类的构造函数构造对象 , 效率比较低 。
二. 指针传递(地址传递)
1. 当进行指针传递的时候 , 形参是指针变量 , 实参是一个变量的地址或者是指针变量 , 调用函数的时候 , 形参指向实参的地址;
2. 指针传递中 , 函数体内可以通过形参指针改变实参地址空间的内容 。
三. 传递引用
1.引用实际上是某一个变量的别名 , 和这个变量具有相同的内存空间;
2. 实参把变量传递给形参引用 , 相当于形参是实参变量的别名 , 对形参的修改都是直接修改实参;
3. 在类的成员函数中经常用到类的引用对象作为形参 , 大大的提高代码的效率 。
方法的参数传递有哪些方式?区别时什么? 举个简单例子来说明:
int func(int a , int b) {return a + b ;}

这里a和b是形式参数 , 这个时候a和b的值是未知的 。
等调用的时候如: fun(5,6)  , 这里 a = 5  ,  b =6  , 这里的5和6对于函数func来说就是实参 , 代表实实在在的值 , 而不是被一个名称指代 , 那么这个函数就会变成:
fun(5,6) {return 5+6;}
函数里面a的值都被5代替 , b的值都被6代替 。
由于是形式参数 , a的值可以是任意的整形值 , 同时b的值也可以是任意的整型值(这里面有一些数的界的问题这里不做考虑) 。 因此你写出一个func函数 , 你就可以对所有的二项加法应用:
5+6 func(5,6)
11+22 func(11,22)
-13 + 43 func(-13,43)
说了这些你应该也能大体明白实参和形参的区别了 。
至于参数传递的方式 , 在C++里总的来分的话就是分为改变实参值的传递(指针、引用)和不改变实参值的传递(传值)
参数传递的方式 常用的参数传递方式有__传地址___ , 传值和传名
什么是形参和实参?参数传递的方式有哪些? #include <iostream>

using namespace std;

//传值调用
void chuanzhi(int a,int b)
{
int t=a;
a=b;
b=t;
cout<<"传值调用函数里交换完后a,b值:";
cout<<a<<" "<<b<<endl;

}

//指针传递
void zhizhen(int *a,int *b)
{
int t=*a;
*a=*b;
*b=t;
cout<<"指针传递函数里交换完后a,b值:";
cout<<*a<<" "<<*b<<endl;
}

//引用调用
void yinyong(int &a,int &b)
{
int t=a;
a=b;
b=t;
cout<<"引用调用函数里交换完后a,b值:";
cout<<a<<" "<<b<<endl;
}

int main()
{
int x=2,y=4;
cout<<"传值调用前:x=2,y=4"<<endl;
chuanzhi(x,y);
cout<<"传值调用后:x="<<x<<",y="<<y<<endl<<endl;
x=2,y=4;
cout<<"指针传递前:x=2,y=4"<<endl;
zhizhen(&x,&y);
cout<<"指针传递后:x="<<x<<",y="<<y<<endl<<endl;
x=2,y=4;
cout<<"引用调用前:x=2,y=4"<<endl;
yinyong(x,y);
cout<<"引用调用后:x="<<x<<",y="<<y<<endl<<endl;
return 0;
}

写的有点多 运行完就 9 行

放在c++ 编译器里 运行下看看 就知道了

交换函数里面是肯定交换了,

而只有 指针传递和引用传递 才会对原来的变量值产生影响;

推荐阅读