我需要使用int i[2]
函数以void swap(int& x)
格式交换几个整数。如您所见,该函数采用类型为int&
的参数。这是函数的非工作版本:
int i[2] = {3, 7};
void swap (int& x)
{
int temp;
temp = x[1];
x[1] = x[0];
x[0] = temp;
}
int main()
{
cout << i[0] << ", " << i[1] << "\n"; // return the original: (3, 7)
swap(i);
cout << i[0] << ", " << i[1] << "\n"; // return i swapped: (7, 3)
}
我该怎么做?
编辑:答案不能使用任何其他功能参数。它必须使用int&
参数。这是Bjarne Stroustrup的书中的一个问题:“C ++编程语言”,第三版。问题#4来自第5章。问题首先要求编写一个以int*
为参数的函数,而不是修改它以接受int&
作为参数。
答案 0 :(得分:6)
引用不是指针。如果可以,我建议更改功能签名,但如果你坚持使用它,你可以做类似的事情:
int *xx = &x;
int temp = xx[1];
xx[1] = xx[0];
xx[0] = temp;
那就是说,你应该只使用std :: swap。
答案 1 :(得分:3)
查看我的副本,练习并未说明swap()
应如何显示。它只是说它“交换(交换价值)两个整数”并且应该采用 a) int*
b) { {1}}作为参数类型。
当你标记问题学习时,真正的问题就变成:
为什么你的int&
只接受一个论点?
答案 2 :(得分:0)
好的,多亏了@gf的建议,我找到了解决方案:)非常感谢!请告诉我你是否看到任何不太适合C ++的东西。
// Swap integers
#include<iostream>
using namespace std;
int i = 3;
int j = 7;
void swap (int& x, int& y)
{
int temp = x;
x = y;
y = temp;
}
int main()
{
cout << i << ", " << j << "\n"; // return the original: (3, 7)
swap(i, j);
cout << i << ", " << j << "\n"; // return i swapped: (7, 3)
}