这是一个特别奇怪的问题,但我试图编写一个函数来交换两个整数的值,而不使用引用或'&'。我不明白这是怎么回事。这是我到目前为止所拥有的。
void swap (int a, int b)
{
int temp;
temp = a;
a = b;
b = temp;
}
这通常是我会这样做的方式,但由于整数不会永久改变,我不知道如何在没有引用的情况下这样做。有什么建议吗?
谢谢!
答案 0 :(得分:-2)
您应该更正问题标题。它说“使用参考”。显然,这与你的意思相反。
假设:
我能想到一个完全可怕的解决方案。使你的整数全局。
ridiculous_swap.hpp
#ifndef RIDICULOUS_SWAP_HPP
#define RIDICULOUS_SWAP_HPP
extern int first;
extern int second;
void swap_ints();
#endif // RIDICULOUS_SWAP_HPP
ridiculous_swap.cpp
int first = 0;
int second = 0;
void swap_ints()
{
auto tmp = first;
first = second;
second = tmp;
}
的main.cpp
#include "ridiculous_swap.hpp"
#include <iostream>
int main()
{
first = 23;
second = 42;
std::cout << "first " << first << " second " << second << "\n";
// prints: first 23 second 42
swap_ints();
std::cout << "first " << first << " second " << second << "\n";
// prints: first 42 second 23
}
它对任何东西都没用,但它确实交换了两个整数而不使用引用或指针。
答案 1 :(得分:-2)
有一个老技巧可以在不使用临时变量的情况下交换两个类似整数的变量:
void swap(int& a, int& b)
{
a ^= b;
b ^= a; // b ^ (a ^b) = a
a ^= b; // (a ^ b) ^ a = b
}