C++ 11 之 参数传递

c11参数传递.cpp

#include <iostream>
using namespace std;

void swap1(int a, int b)
{
    int temp = a;
    a = b;
    b = temp;
    cout << "函数的a: " << a << endl;
    cout << "函数的b: " << b << endl;
}

void swap2(int *a, int *b)
{
    int temp = *a;
    *a = *b;
    *b = temp;
}

void swap3(int &a1, int &b1)  // int &a1 = a; int &b1 = b;
{
    // 3.引用传递
    int temp = a1;
    a1 = b1;
    b1 = temp;
}

// 此法错误
// int& fun1() 
// {
//     int a = 10;//放在栈中,程序释放无法返回
//     return a;   // 返回局部变量的引用
// }

// 此法有static正确
int& fun2()
{
    static int a = 10;  // static静态 可以把变量的生命周期设置为和程序运行周期一样
    return a;   // 返回局部变量的引用
}
int main()
{
    // int a = 10;
    // int b = 20;
    //swap1(a,b); // 值传递
    // swap2(&a,&b);   // 地址传递
    // swap3(a,b);  //引用传递

  
    // int& a1 = a;

    // cout << "a: " << a << endl;
    // cout << "b: " << b << endl;

    // 注意事项
    // 1.引用必须是一块合法的内存空间  初始化时不能直接写数值
    // int& a1 = 10; // 10是常量,不能写,报错

    // 2.不要返回局部变量的引用
    // int &ref = fun1(); // 报错
    // cout << "ref:" << ref << endl;
    int &ref = fun2();
    cout << "ref: " << ref << endl;

    // 3.函数返回值如果是引用,函数的调用可以作为左值出现
    // int &ref = fun2();  // 把a起别名叫ref
    // fun2() = 600;   // a = 600;
    // cout << "ref: " << ref << endl; // 600 因为a的别名是ref

    return 0;
}

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值