关于C 语言中swap的问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于C 语言中swap的问题相关的知识,希望对你有一定的参考价值。

#include "stdio.h"

void swap(int x ,int y)
int t;
t=x;
x=y;
y=t;

main()
int a,b;
a=50; b=60;
swap(a,b);
printf("%d# %d#\n",a,b);
结果为50# 60#,为什么不是反过来,不是swap把两个数位置换了吗?

这个函数为传值调用,没有进行传引用调用,应该将函数形考定义为指针类型,进行传引用调用。

//////////////////////////////////////////////

#include <stdio.h>
void swap(int *x ,int *y)
int t;
t=*x;
*x=*y;
*y=t;

main()
int a,b;
a=50; b=60;
swap(&a,&b);
printf("%d# %d#\n",a,b);

参考技术A void swap(int* a, int* b)

int t = *a;
*a = *b;
*b = t;


swap(&a, &b);
参考技术B 函数参数的传递,只有在传地址才能将两个址传递。

#include <iostream>
using namespace std;
void swap(int *x ,int *y)
int t;
t=*x;
*x=*y;
*y=t;

void main()
int a,b;
a=50; b=60;
swap(&a,&b);
printf("%d# %d#\n",a,b);
这样输出的就是60# 50#了。

关于几类STL容器swap的复杂度问题

(swap)的方式有 (S1.swap(S2))(swap(S1,S2))


(vector,map,set,deque swap)复杂度:(O(1))


(priority\_queue,queue,stack swap)复杂度:(O(n))
特别要注意以上三种容器!!千万别在考场上写
但是在开启(c++11)的情况下这三种容器(swap)的复杂度可以做到(O(1))

以上是关于关于C 语言中swap的问题的主要内容,如果未能解决你的问题,请参考以下文章

c语言中指针作为实参使用SWAP函数的问题。

C语言中swap函数是啥意思?

c语言swap指针

c语言中swap 是啥意思?

c语言排序代码实现

关于几类STL容器swap的复杂度问题