zoukankan      html  css  js  c++  java
  • 还是两个数的交换问题

    #include<iostream.h>
    void main()
    {
        int *a,*b;
        int x,y;
        int c;
        cout<<"Input a b:";
        cin>>x>>y;
        a=new int(x);
        b=new int(y);
        c=b-a; //记录a与b的首地址距离
        a=a+(c^0x80000000); /*
                                           a地址加上距离c得到b地址
                                          (因为*a与*b之间的大小关系,
                                           c^0x80000000目的是为了
                                           对距离值取反,否则就会出
                                           现地址增减方向上的错误)
                                           */
        b=b-(c^0x80000000);
        cout<<"After Swap"<<endl;
        cout<<"a Value:"<<*a<<endl;
        cout<<"b Value:"<<*b<<endl;
    }

    也是用了中间变量,可能这样不够完善,但和c=a;a=b;b=c;比较起来要好得多。
    毕竟c=a;a=b;b=c;当数据量大了的时候是有程序崩溃的危险的。
    现在这个中间变量只记录两首地址的距离,在存储量上应该没问题。

    这些应该是最基础的东西,复习下也好~~~



  • 相关阅读:
    Arrays类
    spring boot 整合ehcache
    自定义注解
    图像技术经典会议
    机器学习常见优化器
    TensorFlow学习笔记(一)
    Linux 下 jupyter安装
    学生、课程、分数关系的设计与实现 Hibernate
    Hibernate连接三种数据库的配置(SQL Server、Oracle、MySQL)
    Oracle11g服务详细介绍及哪些服务是必须开启的?
  • 原文地址:https://www.cnblogs.com/Random/p/681865.html
Copyright © 2011-2022 走看看