使用指针麻烦
Trouble using pointers
我制作了一个充满随机int的数组。我试图找出最大的&通过在两个不同函数中使用指针,其中最淡的元素。
,但我的问题之一是,当我比较找到最低元素时,我的数组中的第一个元素会更改为发现的最小值。
// Compare to find min value
min = array;
for (int i = 0; i < size; i++)
{
if (*min > *(min + i))
*min = *(min + i);
}
// show array using pointer
ptr = resetArray; // Fill int *ptr with original array
for (int i = 0; i < size; i++)
{
std::cout << *(ptr + i) << std::endl;
}
进行此比较后,将 *min值移至阵列的开始,以替换其中的第一个元素。
对不起,我的英语不好!
看起来您可能对指针的工作方式有误解(或者这是一个简单的错误)。
诸如int*
之类的指针不是跟踪int
的变量。int*
指针允许您访问跟踪int
的一些其他变量。指针"点"在其他内存位置;那就是他们的目的。
在您的情况下,min
指向数组中的整数。min
不是整数的单独存储空间。array[i] == *min
不仅是因为它们碰巧具有等效的整数,这一事实。甚至更多,他们指向相同的内存位置。如果更改一个,则更改另一个,因为它们是同一内存位置。
假设您要保持当前的循环&amp;的指针样式,那就是要在数组上迭代并设置min
(不是*min
)等于迭代指针。那就是:
int* iterator;
for(...)
if(*iterator < *min)
min = iterator
iterator += 1;
个人,我只会使用array[i]
您让指针 min 指向数组的第一个值,因此该值被覆盖。相反,您应该将 min 声明为 array 元素的非销钉类型,例如:
auto min = array[0];
for (int i = 1; i < size; i++)
{
if (min > array[i])
min = array[i];
}
无论如何,由于使用C ,因此您可以考虑使用函数std :: minmax_element。
相关文章:
- 1d 智能指针不适用于语法 (*)++
- 在C#中处理C++指针而不使用unsafe的最佳方法
- 为什么使用 "this" 指针调用派生成员函数?
- 函数向量_指针有不同的原型,我可以构建一个吗
- 使用指针从C++中的数组中获取最大值
- 助记符和指向成员语法的指针
- 嵌入方指针压缩已禁用
- 数组的指针从不分段故障
- C++ 指针的内存地址和指向数组的内存地址如何相同?
- C 中的指针和功能方面的麻烦
- 在此任务上遇到麻烦,我们需要使用指针和数组来找到文本文件中某些数字的平均值,中值和模式
- 使用指针麻烦
- 操作员超载和 *该指针的麻烦
- 相同的这个指针和可变类型的麻烦
- 通过指针填充自定义的类 - 与构造函数的麻烦
- 最麻烦的解析和指针间接/取消引用
- 在将一个函数的指针数组传递给另一个函数时遇到麻烦
- 用指针有点小麻烦
- 指针不匹配和麻烦
- 麻烦析构函数,在boost.python中用指针调用python的对象