我试图将C ++数组作为C ++中的参数传递并遇到一些问题。我经历了this但仍然无法解决问题。
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?
答案 0 :(得分:6)
当您将数组指定为函数参数时,它会降级为指针。所以sizeof(a)
是指针的大小,不数组的(字节)大小。您需要将长度作为单独的参数传递,或者使用类似std::vector
的内容。
答案 1 :(得分:1)
C不会将数组的长度存储在内存中,因此被调用的函数无法使用 知道阵列有多长。
sizeof
在编译时进行评估,除非将其应用于数组文字,否则不会得到数组的长度。
您可能需要考虑通过引用传递std::vector<int>
。