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