函数参数的传递

一,数据交换

交换两个数据的位置,通常选用中间变量t做为媒介,将它编写到函数中:

void swap(int m,int n)
{
    int t;
    //return可以立即结束该函数的执行,返回至调用函数的地方继续执行
    if(m==n)return;
    t=m;m=n;n=t;
}
int main()
{
    int a,b;
    cin>>a>>b;
    cout<<a<<","<<b<<endl;
    swap(a,b);
    cout<<a<<","<<b<<endl;
    return 0;
}

我们通常认为该程序可以实现交换a和b的位置,这就是该小节的易错点。

总结:参数传递有传值和传引用两种方式。

注:实参和形参之间是实参到形参的单向传导,形参的交换对实参无影响,但是可以通过交换两者地址的方式交换两者的值。

代码如下:

//这种方法称为传引用
​void swap(int& m,int& n)
{
    int t;
    //return可以立即结束该函数的执行,返回至调用函数的地方继续执行
    if(m==n)return;
    t=m;m=n;n=t;
}
int main()
{
    int a,b;
    cin>>a>>b;
    cout<<a<<","<<b<<endl;
    swap(a,b);
    cout<<a<<","<<b<<endl;
    return 0;
}

​

二,局部变量

局部变量最主要的点就是变量所在的区域决定他它的作用范围。

int main()
{
    //这个a在整个主函数中都可用
    int a;
    for(a=1;a<10;a++)
    {
        //这个b只在它所在的循环结构中起作用,以此类推
        int b;
    }
}

全局变量就是定义在所有函数外的变量,在整个程序中都可以使用。 

三,参数传递的应用

要点:实参与形参个数,顺序,类型要一致。

1,判断一个数值x是否为数组的成员

int mem(int[],int,int);
int main()
{
    int i,n,a[100],x;
    cin>>n;
    for(i=0;i<n;i++)
    {
        cin>>a[i];
    }
    cin>>x;
    //引用数组只标注名称不加长度,因为传递的是数组的首地址
    cout<<mem(a,n,x)<<endl;
}
int mem(int a[],int len,int x)
{
    int i;
    for(i=0;i<len;i++)
        if(a[i]==x)break;
    if(i<len)return i;
    else return -1;
}

2,对分项成绩进行加权求和

void totel(int[][3],int);
int main()
{
    int n,i,j,score[100][3];
    cin>>n;
    for(i=0;i<n;i++)
        for(j=0;j<2;j++)
            cin>>score[i][3];
    totel(score,n);
    return 0;
}
//二维数组作为函数的参数列要求尺寸
void totel(int a[][3],int len)
{
    int i,j;
    for(i=0,i<len;i++)
        a[i][2]=a[i][0]*0.7+a[i][1]*0.3;
}

3*,十进制数转二进制数

int tran(int,int[]);
int main()
{
    int x,a[10],n,i;
    cin>>x;
    n=tran(x,a);
    for(i=n-1;i>=0;i++)
        cout<<a[i];
    return 0;
}
int tran(int y,int a[])
{
    int n=0;
    while(x!=0)
    {
        a[n]=x%2;
        n++;
        x/=2;
    }
    return n;
}

注:数组不能作为函数的返回值!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

嘻嘻哈哈的码农

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值