函数参数:引用

#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
using namespace std;

void func(int a,int b)
{
    printf("a=%d,b=%d",a,b);
}
int main()
{
    char i1=12;
    char i2=30;
    func(a,b);
       return 0;
}

每当调用func()函数时,栈里出现a,b;

当函数调用结束时,栈里面的a,b就被清理

 若使用引用:

#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
using namespace std;

void func(int &a,int &b)
{
    printf("a=%d,b=%d",a,b);
}
int main()
{
    int i1=12;
    int i2=30;
    func(a,b);
       return 0;
}

 当使用引用时,在func()函数的堆栈里不申请空间,直接对main函数的空间进行赋值操作。

 

 引用作为函数参数的操作,没有入栈出栈的操作,效率更高。

但是引用也会导致主函数里变量的数值变化。

#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
using namespace std;

void func(int &a,int &b)
{
    a=11;
    b=10;
}
int main()
{
    int i1=12;
    int  i2=30;
    func(i1,i2);
    printf("i1=%d,i2=%d",i1,i2);
       return 0;
}

导致原函数里的i1,i2.改编为11和10;

 

 

但是,如果你既想通过引用加快速度,又不想main栈里的数据被改变。就可以选择,   常量引用(const)

这样的话,main函数里的变量就被编译器视为常量。

常量是无法被更改的。

#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
using namespace std;

void func(const int &a,const int &b)//常量引用
{
   
}
int main()
{
    int i1=12;
    int  i2=30;
    func(i1,i2);
    printf("i1=%d,i2=%d",i1,i2);
       return 0;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值