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



我在理解指针的想法时遇到了一些问题。我知道他们在理论上做了什么,但我很难理解他们实际上能做什么。在我看来,我看到的基本练习有点模糊,因为它们可以在没有实际主题的情况下完成。例如,通过引用或地址交换两个数字。

#include <iostream>
using namespace std;
int main()
{
int a = 45, b = 35;
cout << "Before Swapn";
cout << "a = " << a << " b = " << b << "n";
int z = a;
a = b;
b = z;
cout << "After Swap with pass by referencen";
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

关于何时使用指针可能会更好(假设这是某种学校上下文)的一个例子是,如果你想创建一个函数来交换数字而不是重写你的代码很多。

void swap(int *a, int *b) {
    int temp = *a;
    *a = *b;
    *b = temp;
    return
}

如果您尝试在函数中使用整数而不是指针,它将在本地交换值,而不是在更大的上下文中交换变量。为了获得相同的结果,你可以做的是使用引用代替(即int &a, int &b),所以你真的不需要使用指针,在这个例子中,它们并不是特别有用。

实际上,std::swap()在现代 c++ 中更有用,但上面的例子可能是在线教程使用指针的原因。

指针在其他上下文中可能很有用,但我不知道这是否在您的问题范围内,也许只是教程试图通过使用指针来实现的目标。

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

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

同样是 指针的情况。有时我们需要用指针交换值。

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

void swap(int&,int&); 

但是在这里,如果我们从 main 将值传递给此函数,它将不起作用。

void swap(int,int);

最新更新