这个swap函数怎么用?

论坛 期权论坛 期权     
匿名用户1024   2021-5-30 16:36   7296   4
错在哪了
用的vc++6.0


分享到 :
0 人收藏

4 个回复

倒序浏览
2#
有关回应  16级独孤 | 2021-5-30 16:36:42
  • 变量i和j没有被初始化,会导致未定义行为;
  • main函数内实际上调用swap的应该是自己写的那个,因为无限定名称查找导致std::swap被隐藏了所以不能直接用swap(i, j),而自己写的应该用swap(&i, &j)来调用;
  • void swap(int *a, int *b) { /*...*/ }的函数定义之后多了一个分号。
3#
有关回应  16级独孤 | 2021-5-30 16:36:43
因为 swap 函数的参数是两个地址,所以这样调用它:
  1. swap(&i, &j);
复制代码
既然你用了 C++,也可以使用引用,swap 可以这样写:
  1. void swap(int &a, int &b){    int k = a;    a = b;    b = k;}
复制代码
4#
有关回应  16级独孤 | 2021-5-30 16:36:44
1、k 的类型错了,应当是一个地址,而不应该是 int 类型。
2、swap 应当交换 a 和b 的地址,不应当只交换值。
3、图上的 swap 在跳出该函数的作用域后,啥也没做。
5#
有关回应  16级独孤 | 2021-5-30 16:36:45
你都不看报错信息的吗?
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:136515
帖子:27303
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP