C++中级-引用

#include <iostream>

using namespace std;

//.引用的本质在C++内部实现的是一个指针常量,引用必须初始化;引用初始化后不能被改变(不能在引用别的东西);引用和原名使用同一内存空间,修改都是一起修改。


int main() 
{
    //引用:给变量起别名
    //语法:数据类型 &别名 = 原名
    int a = 10;
    int& b = a; //别名声明
    int& c = a;    
    cout << &b << endl; //&b = &a
    cout << &a << endl;
    cout << c << endl;
    b = 50;
    cout << a << endl;

    return 0;
}
引用定义
#include <iostream>
using namespace std;

//2.引用做函数参数


//2.1值传递
void swap(int a, int b) {
    int temp = a;
    a = b;
    b = temp;
    cout << "inside a = " << a << endl;
    cout << "inside b = "<< b << endl;
}

//2.2地址传递
void swap2(int* a, int* b) {
    int temp = *a;
    *a = *b;
    *b = temp;
}

//2.3引用传递
void swap3(int& a, int& b) {
    int temp = a;
    a = b;
    b = temp;

}


int main() {
    int a = 10;
    int b = 11;

    cout << "Before a  = " << a << endl;
    cout << "Before b  = " << b << endl;

    //swap2(&a, &b);
    //swap(a, b);
    //swap3(a, b);

    cout << "After a  = " << a << endl;
    cout << "After b  = " << b << endl;
    return 0;
}
引用做函数参数
#include <iostream>
using namespace std;

int &foo1() {
    int a = 11; // 局部变量,在栈区,函数结束便释放。
    return a;
}

int &foo2() {
    static int a = 22;//静态变量,在全局区,程序结束由系统释放。
    return a;
}
 


int main() {
    int& res = foo1(); // res为 foo1()返回值a的别名。
    cout << res << endl;//系统保留
    cout << res << endl;//自动释放

    int& res1 = foo2();
    cout << res1 << endl;
    cout << res1 << endl;

    foo2() = 100;
    cout << foo2() << endl;


    return 0;
}
引用做函数返回值
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值