如果我在C ++中有以下功能:
void functionName(HANDLE arr[100])
{
}
HANDLE hHandles[100];
functionName(hHandles);
有没有办法知道functionName里面'arr'的大小? (没有硬编码)
答案 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
}