使用C ++在函数内获取数组大小

时间:2012-02-16 18:26:59

标签: c++ arrays

如果我在C ++中有以下功能:

void functionName(HANDLE arr[100])
{
}

HANDLE hHandles[100];
functionName(hHandles);

有没有办法知道functionName里面'arr'的大小? (没有硬编码)

4 个答案:

答案 0 :(得分:8)

使用模板捕捉T [N]

中的N.
template <size_t N>
void function(HANDLE (&arr)[N]) 
{
  std::cout << N << " is here\n";
}

答案 1 :(得分:1)

没有。除非你在通过之前在末尾放置了一个分隔符。对于字符串(字符数组),分隔符是空字符'\ 0',因此可以检查大小。但通常对于阵列来说,这是无法做到的。

答案 2 :(得分:0)

考虑将尺寸作为单独的参数发送。

void functionName(HANDLE arr[100], size_t size)
{
}

答案 3 :(得分:0)

您还可以使用全局变量或类属性。

size_t size = 100;
void functionName(HANDLE* arr)
{
//size will be visible here and in any other
// functions and you can change its value during run-time

}