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;当数据量大了的时候是有程序崩溃的危险的。
    现在这个中间变量只记录两首地址的距离,在存储量上应该没问题。

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



  • 相关阅读:
    Philosophy is systematic reflective thinking on life.
    HashMap与HashTable的区别、HashMap与HashSet的关系
    android Intent机制详解
    Android Parcelable理解与使用(对象序列化)
    Java并发编程:volatile关键字解析
    JavaEE 对象的串行化(Serialization)
    pytorch学习
    numpy的一些用法
    约瑟夫问题
    双向链表及其操作
  • 原文地址:https://www.cnblogs.com/Random/p/681865.html
Copyright © 2011-2022 走看看