posts - 137,comments - 0,views - 40595
复制代码
#include <iostream>
#include <string>
#include <windows.h>
using namespace std;

//方式一 使用指针
void swap1(int* a, int* b) { //指针作为函数的参数
    int tmp = *a;
    *a = *b;
    *b = tmp;
}

//方式二 使用引用
void swap2(int& a, int& b) { //引用作为函数的参数
    int tmp = a;
    a = b;
    b = tmp;
}
//下面两种方法都是在不使用第三个变量的情况下交换两个值
//方式三
void swap3(int& a, int& b) { //引用作为函数的参数
    a = a ^ b;
    b = a ^ b;
    a = a ^ b;
}
//方式四
void swap4(int& a, int& b) { //引用作为函数的参数,这种方式若数值太大容易溢出,不太建议使用
    a = a + b;
    b = a - b;
    a = a - b;
}

int main() {
    int x = 10;
    int y = 100;
    swap1(&x,&y);
    printf("第一次调用x:%d,y:%d\n", x, y);
    swap2(x,y);
    printf("第二次调用x:%d,y:%d\n", x, y);
    swap3(x,y);
    printf("第三次调用x:%d,y:%d\n", x, y);
    swap4(x, y);
    printf("第四次调用x:%d,y:%d\n", x, y);

    system("pause");
    return 0;
}
复制代码

1)引用在C++中的内部实现是一个常指针
Type& name <==>Type* const name
2)C++编译器在编译过程中使用常指针作为引用的内部实现,因此引用所占用的空间大小与指针相同。
3)从使用的角度,引用会让人误会其只是一个别名,没有自己的存储空间。这是C++为了实用性而做出的细节隐藏,引用实际上有自己的存储空间。
posted on   wshidaboss  阅读(1193)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· .NET10 - 预览版1新功能体验(一)
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示