为什么我的添加功能没有添加所有数字?

时间:2014-08-22 04:59:36

标签: c++ arrays add

我使用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.有什么问题?

1 个答案:

答案 0 :(得分:4)

在函数的参数中,int array[]是另一种说int *array的方式,因此sizeof(array)将返回指针的大小 - int。我非常肯定有一种更惯用的C ++方式,特别是在较新版本的C ++中,但处理这种情况的C方法是传递第二个参数和数组的大小。