函数参数:引用

#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;
}
发布了38 篇原创文章 · 获赞 3 · 访问量 3521

猜你喜欢

转载自blog.csdn.net/qq_38436175/article/details/104083901