11 int main()
12 {
13 int allAges[] = {21, 22, 22, 19, 34, 12};
14 cout<<Sum(&allAges)<<endl;
15 system("pause");
16 return 0;
17 }
在这个Sum里,i是一个指向i[6]类型的指针,注意,这里不能用int Sum(int (*i)[])声明函数,而是必须指明要传入的数组的大小,不然sizeof(*i)无法计算。但是在这种情况下,再通过sizeof来计算数组大小已经没有意义了,因为此时大小是指定为6的。
使用引用的情况和指针相似:
1 int Sum(int (&i)[6])
2 {
3 int sumofi = 0;
4 for (int j = 0; j < sizeof(i)/sizeof(int); j++)
5 {
6 sumofi += i[j];
7 }
8 return sumofi;
9 }
10
11 int main()
12 {
13 int allAges[] = {21, 22, 22, 19, 34, 12};
14 cout<<Sum(allAges)<<endl;
15 system("pause");
16 return 0;
17 }
18
这种情况下sizeof的计算同样无意义,所以用数组做参数,而且需要遍历的时候,函数应该有一个参数来说明数组的大小,而数组的大小在数组定义的作用域内通过sizeof求值。因此上面的函数正确形式应该是:
1 #include <iostream>
2 using namespace std;
3
4 int Sum(int *i, unsigned int n)
5 {
6 int sumofi = 0;
7 for (int j = 0; j < n; j++)
8 {
9 sumofi += i[j];
10 }