如何在C ++中传递数组

时间:2013-06-13 03:09:47

标签: c++ arrays

我试图传递数组,但不明白为什么它会给我这些错误。该代码也可在ideone.com

中找到
#include <iostream>

using namespace std;

class Max
{
   int max = 0;

   public:
      int getMax(int array[], int size)
      {
          for(int num : array)
          {
                if(num > max)
                    max = num;
          }
          return max;
      }
};

int main( )
{
   Max m;
   int arr[5] = { 5, 3, 2, 7, 6 };
   cout << "Max number is: " << m.getMax(arr,5);

   return 0;
}

3 个答案:

答案 0 :(得分:1)

这里提到的问题是将数组传递给函数it decays to a pointer。涉及最少更改的修复是通过引用传递数组,如下所示:

template <int U>
int getMax(int (&array)[U])
但是,对于初学者来说,这个修复可能不是最直观的。需要更多更改且可能对初学者更有意义的修复方法是使用std::vectorstd::array

int getMax(const std::vector<int> &array)

main

std::vector<int> arr = { 5, 3, 2, 7, 6 };
cout << "Max number is: " << m.getMax(arr);

答案 1 :(得分:0)

  1. size参数需要指定类型(正确类型为size_t)。
  2. array函数中的
  3. getMax是指针(不是数组)。您不能使用基于范围的for循环。您必须使用常规for循环,它将使用size参数。

答案 2 :(得分:0)

原因是for(:)无法获得“int array []”的大小。

你有一个大小参数,但是begin()&amp; end()不能使用它。您必须将begin()和end()成员函数包装起来,或者只是简单地将其包含在

for(int i = 0; i< size; i++)
{
   int num = array[i];
   if(num > max)
      max = num;
}