精华内容
下载资源
问答
  • 1.编写函数swap实现交换两个数位置的功能 //⚠️ //8.酱油和醋,要求将他们互换一下 //注意不能直接写void swap(int a,int b) void swap(int *a,int *b){ int temp; temp=*a; *a=*b; *b=temp; }; int main(){ ...

    1.编写函数swap实现交换两个数位置的功能

    //⚠️
    //8.酱油和醋,要求将他们互换一下
    //注意不能直接写void swap(int a,int b)
    void swap(int *a,int *b){
        int temp;
        temp=*a;
        *a=*b;
        *b=temp;
    };
    int main(){
        int a,b;
        printf("请输入数字a和b\n");
        scanf("%d %d",&a,&b);
        printf("%d %d\n",a,b);
        swap(&a,&b);
        printf("%d %d\n",a,b);
    
    }
    

    2.总结swap的使用实现方法
    2.1借助辅助变量temp的swap函数
    2.1.1引用类型形参

    void swap(int &a, int &b) //引用类型方式  
    {  
        int temp; //辅助变量  
        temp = a;  
        a = b;  
        b = temp;     
    }  
    

    2.1.2指针类型形参

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

    2.2采用加减法的swap函数

    void swap(int &a, int &b)  
    {  
        a = a + b;  
        b = a - b;  
        a = a - b;  
    }  
    

    2.3使用异或运算的swap函数

    void swap(int &a, int &b)  
    {  
        a = a ^ b;  
        b = a ^ b;  
        a = a ^ b;  
    }  
    
    
    展开全文
  • void swap(int *a, int *b)//参数是俩个指针变量 { int temper; temper = *a;//把a指向的值进行赋值 *a = *b; *b = temper; cout << *a << " " << *b; } int main() { int a = 3, b = 5; ...

    学会区分指针,与引用的区别
    指针:

    #include<iostream>
    using namespace std;
    void swap(int *a, int *b)//参数是俩个指针变量
    {
    	int temper;
    	temper = *a;//把a指向的值进行赋值
    	*a = *b;
    	*b = temper;
    	cout << *a << " " << *b;
    }
    int main()
    {
    	int a = 3, b = 5;
    	swap(&a, &b);
    		return 0;
    }
    
    

    引用:(区分与指针中参数与虚数的区别)

    #include<iostream>
    using namespace std;
    void swap(int &a, int &b)//参数是俩个整形变量的引用
    {//引用是他本身的值,直接进行交换就行了
    	int temper;
    	temper = a;
    	a = b;
    	b = temper;
    	cout << a << " " << b;
    }
    int main()
    {
    	int a = 3, b = 5;
    	swap(a, b);
    		return 0;
    }
    

    C++ 引用 vs 指针
    引用很容易与指针混淆,它们之间有三个主要的不同:

    不存在空引用。引用必须连接到一块合法的内存。
    一旦引用被初始化为一个对象,就不能被指向到另一个对象。指针可以在任何时候指向到另一个对象。
    引用必须在创建时被初始化。指针可以在任何时间被初始化。

    切记区别,不可混用

    展开全文
  • C++数据结构(1)swap实现

    2019-05-28 20:11:38
    @brief:C++数据结构--实现交换算法 */ using namespace std; void swap(int x,int y) {//交换失败,原因是值传递--就是把参数进行拷贝,把x 拷贝,y 拷贝,交换的是拷贝,原来的没有影响 int temp;...
    #include <QCoreApplication>
    #include <iostream>
    /*
      @brief:C++数据结构--实现交换算法
    */
    using namespace std;
    void swap(int x,int y)
    {//交换失败,原因是值传递--就是把参数进行拷贝,把x 拷贝,y 拷贝,交换的是拷贝,原来的没有影响
       int temp;
       temp=x;
       x=y;
       y=temp;
    }
    //C 语言实现
    void swap1(int *x,int *y)
    { //利用指针实现地址传递
        int temp;
        temp=*x;
        *x=*y;
        *y=temp;
    }
    //C++ 实现
    void swap2(int &x,int &y)
    {
       //使用引用传递,就是给变量起了一个别名
       int temp;
        temp=x;
        x=y;
        y=temp;
    }
    //C++ 实现利用模板函数实现
    //template<class T>  void swap(T &x,T &y);
    int main(int argc, char *argv[])
    {
      //  QCoreApplication a(argc, argv);
        cout<<"hello"<<endl;
        int a=1,b=2;
        cout<<"change before:"<<a<<b<<endl;
        //swap(a,b);//交换之后
        //swap1(&a,&b)
        //  swap2(a,b);
        std::swap(a,b);//使用的是C++指针函数
        cout<<a<<b<<"after change"<<endl;
    }

     

    展开全文
  • c语言swap(a,b)值交换的4种实现方法,这么好的东西,尽管简单,但值得发表,以此共享。
  • 在学习操作系统这本书的时候,我们使用的是汤小丹老师的《计算机操作系统》接下来我将会使用java语言去实现内部代码。 Swap指令 该指令又称为对换指令,在Intel 80x86中又称为XCHG指令,用于交换两个字的内容。...

    在学习操作系统这本书的时候,我们使用的是汤小丹老师的《计算机操作系统》接下来我将会使用java语言去实现内部代码。

    Swap指令


    该指令又称为对换指令,在Intel 80x86中又称为XCHG指令,用于交换两个字的内容。下面为伪代码。

    void swap(boolean *a,boolean *b){
        boolean temp;
        temp = *a;
        *a = *b;
        *b = temp;
    }

    方法是为每个临界资源设置一个全局的布尔变量lock,初值为false,在每个进程中再利用一个局部变量key,利用swap指令实现进程互斥的循环进程,下面为伪代码描述。

    do{
        key = true;
        do{
            swap(&lock,&key);
        }while(key!=false);
        //临界区操作
        lock = false;
     }while(true);

    利用上述硬件指令能够有效地实现进程互斥,但当临界资源忙碌时,其他访问进程必须不断地进行尝试,处于一种忙等的状态,不符合“让权等待”的原则,造成处理机时间的浪费,同时难以解决复杂问题。

    接下来为java语言描述。

    package chapter02;
    
    //the class is the operation system's code
    public class P057Swap {
        private static int buffer;
        private static boolean lock;
    
        public static void main(String[] args) {
            lock = false;
            buffer = 0;
            Thread prov = new ProvThreadClass();
            prov.start();
    
            Thread cust = new CustThreadClass();
            cust.start();
        }
    
        public static boolean swap(boolean param){
            boolean temp = lock;
            lock = param;
            param = temp;
            //将替换的param参数回调回去
            return param;
        }
        static class ProvThreadClass extends Thread{
            @Override
            public void run() {
                while(true){
                    //缓冲池满的话
                    if(buffer==10){
    
                    }
                    else{
                        boolean key = true;
                        do{
                            //将key值兑换,除非当前的lock为false的时候就可以跳出循环
                            key = swap(key);
                        }while (key!=false);
                        buffer+=1;
                        System.out.println("生产出1件产品,目前剩余产品个数:"+buffer);
                        lock = false;
                    }
                    try {
                        Thread.sleep(200);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }
            }
        }
        static class CustThreadClass extends Thread{
            @Override
            public void run() {
                while(true){
                    //缓冲池空的话
                    if(buffer==0){
    
                    }
                    else{
                        boolean key = true;
                        do{
                            //将key值兑换,除非当前的lock为false的时候就可以跳出循环
                            key = swap(key);
                        }while (key!=false);
                        buffer-=1;
                        System.out.println("消费1件产品,目前剩余产品个数:"+buffer);
                        lock = false;
                    }
                    try {
                        Thread.sleep(300);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }
            }
        }
    }
    

    实验代码运行结果: 

    "C:\Program Files\Java\jdk1.8.0_101\bin\java.exe"
    生产出1件产品,目前剩余产品个数:1
    消费1件产品,目前剩余产品个数:0
    生产出1件产品,目前剩余产品个数:1
    消费1件产品,目前剩余产品个数:0
    生产出1件产品,目前剩余产品个数:1
    消费1件产品,目前剩余产品个数:0
    生产出1件产品,目前剩余产品个数:1
    生产出1件产品,目前剩余产品个数:2
    消费1件产品,目前剩余产品个数:1
    生产出1件产品,目前剩余产品个数:2
    消费1件产品,目前剩余产品个数:1
    生产出1件产品,目前剩余产品个数:2
    生产出1件产品,目前剩余产品个数:3
    消费1件产品,目前剩余产品个数:2
    生产出1件产品,目前剩余产品个数:3
    消费1件产品,目前剩余产品个数:2
    生产出1件产品,目前剩余产品个数:3
    生产出1件产品,目前剩余产品个数:4
    消费1件产品,目前剩余产品个数:3
    生产出1件产品,目前剩余产品个数:4
    消费1件产品,目前剩余产品个数:3
    生产出1件产品,目前剩余产品个数:4
    生产出1件产品,目前剩余产品个数:5
    消费1件产品,目前剩余产品个数:4
    生产出1件产品,目前剩余产品个数:5
    消费1件产品,目前剩余产品个数:4
    生产出1件产品,目前剩余产品个数:5
    生产出1件产品,目前剩余产品个数:6
    消费1件产品,目前剩余产品个数:5
    生产出1件产品,目前剩余产品个数:6
    消费1件产品,目前剩余产品个数:5
    生产出1件产品,目前剩余产品个数:6
    生产出1件产品,目前剩余产品个数:7
    消费1件产品,目前剩余产品个数:6
    生产出1件产品,目前剩余产品个数:7
    消费1件产品,目前剩余产品个数:6
    生产出1件产品,目前剩余产品个数:7
    生产出1件产品,目前剩余产品个数:8
    消费1件产品,目前剩余产品个数:7
    生产出1件产品,目前剩余产品个数:8
    消费1件产品,目前剩余产品个数:7
    生产出1件产品,目前剩余产品个数:8
    生产出1件产品,目前剩余产品个数:9
    
    Process finished with exit code -1
    


     

    展开全文
  • C++ swap函数的实现

    2020-10-06 15:47:28
    C++中的swap函数使用move移动语义实现交换,节省了临时拷贝的开销
  • Swap函数实现

    万次阅读 2016-04-04 15:21:04
    Swap函数 基本实现1)一般实现,借助临时变量// 引用实现 Swap1(int &x, int &y) { int temp; temp = x; x = y; y = temp; } // 调用 int x = 5; int y = 6; Swap1(x, y);// 指针实现 Swap1(int *x, int *y) { ...
  • swap指令实现互斥

    千次阅读 2019-10-02 15:23:33
    lock初值为FALSE do{ key=TRUE; ... swap(&key,&lock); }while(key!=FALSE); 临界区操作 ... lock=FALSE; }while(TRUE);  妙啊! 转载于:https://www.cnblogs.com...
  • python中实现swap函数

    2021-02-26 13:57:03
    python中实现swap函数python中实现swap函数python中实现swap函数 Python以引用方式管理对象,你可以交换引用,但通常不能交换内存中的对象值。 def swap(t1, t2): return t2, t1 在Python中交换a,b,不需要交换...
  • 关于std::swap实现的移动语义

    千次阅读 2018-07-25 10:04:25
    swap中,会默认使用对象的右值引用进行移动,如果 没有右值引用,则调用默认拷贝构造函数。 在linux环境下进行验证。 1.类中只定义了左值引用拷贝构造函数和重载运算符=。 结果如下: 先生成a,b对象,在...
  • boost swap实现

    2015-06-26 09:53:03
    先简单贴下boost swap实现的代码: namespace boost_swap_impl { void swap_impl(T& left, T& right) { using namespace std; swap(left, right); } } namesapce boost { void swap(T
  • swap函数的实现方式

    千次阅读 2017-09-21 15:00:31
    默认版本namespace std { template void swap(T & a,T & b) { T temp(a); a=b; b=temp;... }}如果类采用指针存储数据,则...因为只用交换两个指针便能实现两个对象的交换。因此需要特化版本的swap,由于指针是私有成
  • 利用swap方法实现两个数组之间元素交换 #include <stdio.h> void swap(int *a,int *b) { int tmp =*a; *a = *b; *b =tmp; } int main() { int i,j,k; int A[10]; int B[10]; printf("请输入数组A的内容...
  • 主要介绍了Shell脚本实现监控swap空间使用情况和查看占用swap的进程,曾经有一段时间机器的swap不停上涨,监控后发现是一些java进程占用swap空间后,完全不释放,杀死这些java进程后,释放swap,需要的朋友可以参考下
  • 有时面试题里有陷阱,没错,数值交换没交换,话不多说,老样子,直接上代码丢图: –I #include&...void swap01(int a, int b){ // I不同点 int t = a; a = b; b = t; } int main(){ int a = 2...
  • swap()函数实现变量值的交换

    千次阅读 2019-10-23 22:10:14
    值传递交换值失败。 #include<stdio.h>...void swap(int a, int b) { int t; t = a; a = b; b = t; } int main() { int m, n; scanf("%d %d", &m, &n); swap(m, n); printf(...
  • 实现Swap函数,将两个数交换

    千次阅读 2020-12-16 14:29:32
    刚刚对指针做了基础的学习,那么指针的作用在哪里呢,我们就用Swap函数作一下分析。 void Swap(int a, int b)//交换不成功 { int tmp = a; a = b; b = tmp; } int main() { int a = 10; int b = 20; printf("交换前:...
  • 用指针直接访问存储两个整数的内存空间,实现交换,下面归纳一下易错的地方 一、只交换了形参 void Swap_err(int a,int b) { int tmp = a; a = b; b = tmp; } 这种情况,只是交换了Swap函数里a,b的值(即只交换...
  • 利用Swap指令进程互斥实现

    千次阅读 2016-10-24 22:47:50
    这里用线程来模拟 硬件方法同步机制的Swap方法指令 利用下面的代码 能有效的实现进程互斥 但当临界资源忙碌时其他访问进程 必须不断测试 处于一种忙等状态 不符合让权等待 造成处理机时间的浪费 同时很难用于解决...
  • swap是现代Unix操作系统一个非常重要的特性。尤其在大型数据库服务器上,swap往往是性能首要查看指标。 通俗的说法,在Unix里,将开辟一个磁盘分区,用作swap,这块磁盘将作为内存的的替代品,在内存不够用的时候...
  • java中怎样实现swap函数?

    千次阅读 2019-06-27 09:48:39
    那如果我要写一个swap函数交换两个变量的值,该怎么办呢? 二、案例提出:有三个数abc,要求从小到大输出 思路:a中放最小的,c中放最大的,然后我们输出a,b,c 三、解决办法: 1.首先我们想到数组: 2.还...
  • 在进行大的bga PCB设计的时候,特别是fpga,经常会用到swap pin(管脚交换),文档亲测可用,希望对大家有所帮助。
  • CSharp交换函数swap的三种实现方法

    千次阅读 2019-01-19 10:27:39
    本文采用三种方式实现两个数之间的交换,分别是①借助辅助变量temp的swap函数,②采用加减法的swap函数 ,③使用异或运算的swap函数。 1.利用temp实现: private static void TempSwap(ref int a,ref int b) { ...
  • C语言实现swap的四种方式

    千次阅读 2015-05-27 09:33:50
    平常swap(a,b)值交换,我们基本都是使用第一种方法,对于数学较好的人,可能会想到第二种方法,想到时,一定感觉很好,。对于汇编或对位有理解的人,可能会想到第三种方法,这个方法很妙。但,真正促使我写这篇文章...
  • CSS3实现swap交换动画

    2020-09-24 23:05:17
    主要为大家介绍了CSS3实现swap动画,实现一个交换动画,一个笑脸慢慢从远处,回到自己的原来位置的一种效果,这种动画在JS里面也是很多见的,感兴趣的小伙伴们可以参考一下
  • __sync_bool_compare_and_swap 汇编实现

    千次阅读 2018-05-05 11:48:38
    看了看nginx的实现 发现需要 setz %返回寄存器。。  写道 /tmp/ccyACQUP.s:55: Error: suffix or operands invalid for `setz' /tmp/ccyACQUP.s:103: Error: suffix or operands invalid for `setz' 高版本才可以 ...
  • Linux系统的swap机制

    千次阅读 2020-01-07 15:31:07
    1. swap 原理 当系统发生内存泄露,或者运行了占用大量内存的进程,导致系统的内存资源紧张时,会导致两种后果,内存回收和OOM杀死进程。OOM这里就不赘述了,来看看内存回收,也就是系统释放掉可以回收的内存,比如...
  • //需要传指针才能改变实参 ...void swap1(int* x, int* y) { int temp; temp = *x; *x = *y; *y = temp; } void swap2(int* x, int* y) { //两个相同的数异或为0,任何数异或0还是它本身 *x = *x ^ *y; ...
  • c++——std::swap实现

    2021-11-04 10:06:26
    std::swap的源码实现如下: template<typename T> void swap(T &a,T &b) noexcept { T temp = std::move(a); a = std::move(b); b = std::move(temp); } std::swap是基于std::move语义实现的,...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 221,891
精华内容 88,756
关键字:

swap实现