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