在函數內部數組的大小。如果我有C++以下功能:獲取使用C++
void functionName(HANDLE arr[100])
{
}
HANDLE hHandles[100];
functionName(hHandles);
有沒有辦法知道functionName內「改編」的大小? (在沒有硬編碼的情況下)
在函數內部數組的大小。如果我有C++以下功能:獲取使用C++
void functionName(HANDLE arr[100])
{
}
HANDLE hHandles[100];
functionName(hHandles);
有沒有辦法知道functionName內「改編」的大小? (在沒有硬編碼的情況下)
使用模板趕上[N]
template <size_t N>
void function(HANDLE (&arr)[N])
{
std::cout << N << " is here\n";
}
好的,是的,這個使用模板。 – ahmd0 2012-02-17 04:51:45
反正你沒有很多選擇。數組的大小是C++數組類型的一部分的事實是一個非常強大的信息。不使用它會導致低於標準的解決方案。 – 2012-02-17 06:24:10
不需要,除非在傳遞之前自己在末尾加上了分隔符。在字符串(字符數組)的情況下,分隔符是空字符'\ 0',因此可以檢查大小。但通常對於數組來說,這是無法完成的。
終結者是一個很好的建議,但有幾種方法可以做到這一點。 – 2012-02-16 18:54:19
請考慮發送大小作爲一個單獨的參數。
void functionName(HANDLE arr[100], size_t size)
{
}
請考慮使用'std :: vector'。 – 2012-02-16 18:59:21
你也可以使用全局變量或類屬性的N個T中。
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
}
不是沒有把它作爲參數傳遞出去,沒有。這就是std容器存儲數組大小的原因。 – crush 2012-02-16 18:28:44
[相關常見問題](http://stackoverflow.com/questions/4810664/) – fredoverflow 2012-02-16 18:30:18
好的,我以爲我會試試:) – ahmd0 2012-02-16 18:34:53