1

我正在尝试将 C++ 数组作为 C++ 中的参数传递,但遇到了一些问题。我经历了这个,仍然无法解决问题。

C++
#include<iostream>
using namespace std;

void comb(int a[])
{
    int alen = sizeof(a)/sizeof(*a);
    cout << alen << endl;
    /* Since 'I' know the size of a[] */
    for(int i = 0; i < 7; i++)
    cout << a[i] << " ";
    cout << endl;
}

int main()
{ 
    int a[] = {1,2,3,4,5,6,7};
    comb(a);
}

Output
2
1 2 3 4 5 6 7

我的问题是数组的大小如何计算为 2?

4

2 回答 2

6

当您将数组指定为函数参数时,它会降级为指针。sizeof(a)指针的大小也是如此,而不是数组的(字节)大小。您需要将长度作为单独的参数传递,或使用类似std::vector.

于 2013-07-24T20:02:29.423 回答
1

C 不会将数组的长度存储在内存中,因此被调用的函数无法知道数组的长度。

sizeof在编译时进行评估,除非您将其应用于数组文字,否则您将无法获得数组的长度。

You may want to consider passing a std::vector<int> by reference instead.

于 2013-07-24T20:05:14.677 回答