第二周——C/C++语言中函数参数传递的三种方式

问题及代码及运行结果:

#include<iostream>  
using namespace std;  
void myswap(int x, int y)  
{  
    int t;  
    t=x;  
    x=y;  
    y=t;  
}  
  
int main()  
{  
    int a,b;  
    cout<<"请输入待交换的两个整数:";  
        cin>>a>>b;  
     myswap(a,b);  
        cout<<"调用函数交换后的结果是:"<<a<<" "<<b;  
    return 0;  
} 





原因分析:

只是将形式参数的值交换,而实际参数a b的值并没有交换,应交换其本身。


#include<iostream>  
using namespace std;  
void myswap(int *p1, int *p2)  
{  
    int  t;  
    t=*p1;  
    *p1=*p2;  
    *p2=t;  
}  
  
int main()  
{  
    int a,b;  
    cout<<"请输入待交换的两个整数:";  
        cin>>a>>b;  
     myswap(&a,&b);  
        cout<<"调用函数交换后的结果是:"<<a<<" "<<b;  
    return 0;  
}  





原因分析:址传递,地址进行交换。

#include<iostream>  
using namespace std;  
void myswap(int &x, int &y)  
{  
    int t;  
    t=x;  
    x=y;  
    y=t;  
}  
int main()  
{  
    int a,b;  
    cout<<"请输入待交换的两个整数:";  
        cin>>a>>b;  
     myswap(a,b);  
        cout<<"调用函数交换后的结果是:"<<a<<" "<<b;  
    return 0;  
}  




原因分析:用了引用的方法。


知识点总结:

   C语言中, 对于两种函数参数传递的方式:传值和传地址;而C++中,又拓展了引用方式。


学习心得:

    第一个传值的方法的方法是错误的但也是我经常经常会犯的错误,以后要多加警示防止类似问题的出现。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值