参数传递方式有哪些( 三 )
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++ 编译器里 运行下看看 就知道了
交换函数里面是肯定交换了,
而只有 指针传递和引用传递 才会对原来的变量值产生影响;
推荐阅读
- 人到晚年,如果一个人独居,需要学会以下3种生活方式
- 大话西游2:这些召唤兽打造方式太特殊了,不信您接着看
- 网络推广的方式有哪些,常见的网络推广手段有哪些
- 动物过冬的方式有哪些,各种动物的过冬方式写一写
- 遗传方式有哪些,6指是什么遗传方式
- 热处理方法有哪些,四种常见的热处理方式
- 种植方式有哪些,种植方式是什么意思
- 网络推广都有哪些方式,网络推广有哪几种方法
- 惩罚的方法有哪些,的惩罚方式
- 健身有哪些好处,健身的方式与好处