交换两个整数的值

交换两个整数的值:0和一个数a异或是a。
Q:用异或运算找出一串数字中没有重复的数,123451234??????

#include<stdio.h>

int main(void){
    /*^ 是异或按位运算符,0001
                       0010
           异或运算后是,0011
           再异或运算后,0001
           再异或运算后,0010
           从而达到交换的目的
    */

    int a = 1;
    int b = 2;
    a=a^b;
    b=b^a;
    a=a^b;
    return 0;
}

法2:用a=a+b;
b=a-b;
a=a-b;

### C++ 中使用指针交换两个整数的原理和原因 #### 原理 在 C++ 中,指针是一种特殊的变量类型,它存储的是内存地址而不是具体的数。当通过指针来交换两个整数时,实际上是通过修改这些指针所指向的内存位置中的来完成数据交换的操作。 以下是具体的过程描述: 1. **定义指针并初始化**:首先,在程序中声明两个指针变量,并让它们分别指向待交换两个整数变量的地址。 2. **解引用赋**:接着,在 `swap` 函数内部,通过对指针进行解引用操作(即使用 `*` 运算符),可以直接访问到这两个整数所在的内存单元,并对其进行读写操作。 3. **临时存储与替换**:为了实现交换功能,通常会引入一个额外的临时变量用于保存其中一个整数的原始;随后依次将另一个整数赋予当前整数的位置,再把之前暂存的数据放入第二个整数所在的地方[^2]。 下面是一个典型的基于指针实现两数互换的代码实例: ```cpp #include <iostream> using namespace std; void exchange(int *x, int *y) { int temp; temp = *x; // 将第一个数存入temp *x = *y; // 把第二个数给第一个数 *y = temp; // 再把原先的第一个数(现在存在temp里)交给第二个数 } int main() { int x = 10, y = 20; cout << "交换前:x =" << x << ",y =" << y << endl; exchange(&x, &y); cout << " 交换后:x = " << x << ",y =" << y << endl; return 0; } ``` 此段代码展示了如何借助指针机制达成目标——先传入实际参数对应的地址至形式参数处,之后便能在子函数体内自由操控原对象而无需顾虑返回等问题[^3]。 #### 原因分析 采用指针方式进行这种基础性的任务主要有以下几个方面的考量因素: - **效率提升**: 如果直接复制整个结构体或者大型数组作为实参的话,则每次调用都会涉及大量数据搬运工作量巨大且耗时较长。然而如果仅传送其首址则可以显著减少开销因为只需要处理固定大小的信息即可[^4]。 - **灵活性增强**: 利用指针不仅可以轻易地操纵单个元素还能方便地遍历连续分布的一系列项目比如链表节点等等情况下的动态管理需求都离不开这一工具的支持[^1]. 综上所述,C++之所以倾向于运用指针对诸如简单数字这样的基本类型执行类似的变换动作主要是出于性能优化以及编程便利性等方面的综合权衡结果.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值