【问题标题】:Address of minimum value in an array in C/C++C / C ++中数组中最小值的地址
【发布时间】:2018-01-15 08:56:01
【问题描述】:

进入C/C++ 仅一周时间。我有一个函数,它将指向数组的指针作为参数。在函数内部操作这个输入数组会导致另一个(全局定义的)数组发生变化。 我需要在这个(全局定义的)浮点数组中找到并返回最小值的地址。在 C++ 中,我可以使用 std::min_element() 相对轻松地做到这一点,因为这会返回一个迭代器。有什么办法可以在C中做到这一点?我可以编写一个循环来查找数组中的最小值,但不确定如何访问其地址?这是(伪)代码。

globalArray[100] = {0}
float *DoSomething(float *array)
{
    if (conditionMet == 1)
        { Do something to array that modifies globalArray;}
    float min;
    min = globalArray[0];
    for (int i = 0; i <100; i++)
    {
         if (globalArray[i] < min)
            min = globalArray[i];
    }
    return &min;
}

【问题讨论】:

  • 发布您当前的代码,以便我们为您提供帮助。
  • 没有一些代码很难说出你在问什么,但它不只是return &amp;array[minIndex]; 吗?
  • 一周同时学习两种不同的语言?哇。就个人而言,我会选择一个。
  • C 和 C++ 尽管表面上相似,但它们是非常非常不同的语言。不要混淆两者。
  • 完全明白C和C++是不同的。正如我所说,我对如何使用 std::min_element 在 C++ 中完成此任务有一定的了解。但也需要在 C 中执行此操作。

标签: c++ c arrays minimum


【解决方案1】:

您需要保留一个额外的变量来跟踪索引。

min = globalArray[0];
int minIndex = 0;
for (int i = 0; i <100; i++)
{
     if (globalArray[i] < min) {
        min = globalArray[i];
        minIndex = i;
     }
}
return &globalArray[minIndex];

或者,您可以使用额外的变量来跟踪指针。

min = globalArray[0];
float* minPointer = globalArray;
for (int i = 0; i <100; i++)
{
     if (globalArray[i] < min) {
        min = globalArray[i];
        minPointer = globalArray + i;
     }
}
return minPointer;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-10-06
    • 1970-01-01
    • 2017-02-13
    • 2021-09-11
    • 2016-03-12
    • 1970-01-01
    • 2017-06-26
    • 2017-08-18
    相关资源
    最近更新 更多