【发布时间】:2014-02-22 01:28:56
【问题描述】:
尝试传递一个从 1 开始的连续数字的 int 数组,但假设接收该数组的函数不知道它的长度。当试图计算函数内部的长度时,它只给我 1,因为它在计算 sizeof(arrayName) 时只找到第一个元素。
#include <iostream>
using namespace std;
int Sum(int intArray[]) {
int n = sizeof(intArray) / sizeof(*intArray);
cout << "Array size in function: " << n << endl;
return n * (n + 1) / 2;
}
int main() {
int anArray[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
int arraySum = Sum(anArray);
cout << "Array size in main: " << sizeof(anArray) / sizeof(*anArray) << endl;
cout << "Sum is: " << arraySum;
int a;
cin >> a;
return 0;
}
【问题讨论】:
-
避免痛苦,使用
std::vector,或std::array