为什么要使用指针交换数字(初学者)?

时间:2019-01-31 19:04:17

标签: c++ pointers swap

我遇到了一些有关指针概念的问题。我知道他们在理论上会做什么,但是我在理解他们实际上有能力方面有一个问题。我认为基本练习有些模糊,因为无需实际主题即可完成。例如,通过引用或地址交换两个数字。

#include <iostream>
using namespace std;

int main()
{
int a = 45, b = 35;
cout << "Before Swap\n";
cout << "a = " << a << " b = " << b << "\n";

int z = a;
a = b;
b = z;

cout << "After Swap with pass by reference\n";
cout << "a = " << a << " b = " << b << "\n";
} 
//copied an example i saw online with pointers and modified it to get the 
same result without needing them

2 个答案:

答案 0 :(得分:1)

关于使用指针的一个更好的示例(假设这是某种学校背景)可能是您要创建一个函数来交换数字而不是大量重写代码。

&&

如果您尝试在函数中使用整数而不是指针,它将在本地交换值,而不是在更大的上下文中交换变量。要获得相同的结果,您可以做的是改用引用(即(computerScore < 3 && playerScore < 3) ),这样就不必真的使用指针,并且在本例中它们并不是特别有用。

实用上,void swap(int *a, int *b) { int temp = *a; *a = *b; *b = temp; return } 在现代c ++中更有用,但是上面的示例可能就是为什么在线教程使用指针的原因。

指针在其他情况下可能很有用,但是我不知道这是否在您的问题范围之内,也许不知道本教程试图通过使用指针来实现什么。

答案 1 :(得分:0)

使用std::swap()方法进行交换。 效率更高。

  

为了您的理解,如果我们编写一个交换两个值的函数   因此我们必须按引用而不是按值传递值。

     

相同是   指针的情况。有时候我们需要通过指针交换值。

因此,如果我们从主函数将值传递给此函数,它将交换它。

void swap(int&,int&); 

但是,如果我们从主函数将值传递给此函数,那么它将无法正常工作。

void swap(int,int);