为什么要使用指针来交换数字(初学者)
Why use pointers to swap numbers(beginner)?
我在理解指针的想法时遇到了一些问题。我知道他们在理论上做了什么,但我很难理解他们实际上能做什么。在我看来,我看到的基本练习有点模糊,因为它们可以在没有实际主题的情况下完成。例如,通过引用或地址交换两个数字。
#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);
相关文章:
- 比较并显示使用最小值(a,b)和最大值(a、b)升序排列的4个数字
- 为什么随机数生成器不在void函数中随机化数字,而在main函数中随机化
- 检查输入是否不是整数或数字
- 如何(从固定列表中)选择一个数字序列,该序列将与目标数字相加
- 如何用数字处理log(0)
- C++错误消息*成员参考.**初学者*
- 最高有效数字侧的第N位
- 如何获取一个数字的前3位
- 查找最接近的大于当前数字的数字的索引
- 找到两对数字,使它们的乘积的绝对差最小化
- 我想做一个彼此不同但重复出现的数字
- 将数字转换为字母(例如:123 转换为一二三)
- C++如何计算用户输入的数字中的偶数位数
- 如何在C++中确定文本文件中的元素是字符还是数字
- 打印数字图案
- C++问题:用户认为数字1-100,程序提出问题不超过6次即可得到答案。无法正确
- 如何检查一个c++字符串中有多少相同的字符/数字
- 求出有多少个数字是完美平方,而sqrt()是L,R范围内的素数
- 为什么要使用指针来交换数字(初学者)
- c++初学者如何返回一个数字中的位数