【问题标题】:Why doesn't my add function add all the numbers? [duplicate]为什么我的 add 函数没有添加所有的数字? [复制]
【发布时间】:2014-08-22 04:59:35
【问题描述】:

我正在使用 sizeof 技巧来获取数组的长度,但它看起来只是将 1 和 2 相加。

#include <iostream>
#include <stdio.h>
using namespace std;

int add(int array[]) 
{
   int sum = 0;
   for (int i = 0; i < sizeof(array)/sizeof(array[0]); i += 1)
   {
       sum += array[i];
   }
   return sum;
}

int main()
{
    int array[4] = {1, 2, 3, 4};
    cout << add(array);

    return 0;
}

输出为 3。出了什么问题?

【问题讨论】:

标签: c++ arrays add


【解决方案1】:

在函数的参数中,int array[]int *array 的另一种说法,因此sizeof(array) 将返回指向int 的指针的大小。我很确定有一种更惯用的 C++ 方式来执行此操作,尤其是在较新版本的 C++ 中,但 C 处理此问题的方式是传递带有数组大小的第二个参数。

【讨论】:

  • Re 惯用的 C++... 使用 std::arrayvector 是一种方法 - 另一种方法是使用 template &lt;size_t N&gt; int add(int (&amp;array)[N]) { ... i &lt; N... },但随后您确实获得了每个数组大小的函数实例化(您可以编写将N 传递给实现函数的瘦内联包装器)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-08-20
  • 1970-01-01
  • 2017-07-06
  • 1970-01-01
  • 1970-01-01
  • 2022-08-15
  • 2021-04-29
相关资源
最近更新 更多