我使用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.有什么问题?
答案 0 :(得分:4)
在函数的参数中,int array[]
是另一种说int *array
的方式,因此sizeof(array)
将返回指针的大小 - int
。我非常肯定有一种更惯用的C ++方式,特别是在较新版本的C ++中,但处理这种情况的C方法是传递第二个参数和数组的大小。