在C++中将数组作为参数传递

Sum*_*era 1 c++

我正在尝试将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
Run Code Online (Sandbox Code Playgroud)

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

Dre*_*wen 6

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

  • 或者使用模板,或使用`std :: array`. (4认同)