C++ 如果大小未知,如何通过引用将一维数组作为参数传递?

C++ 如果大小未知,如何通过引用将一维数组作为参数传递?,c++,arrays,pass-by-reference,argument-passing,C++,Arrays,Pass By Reference,Argument Passing,我知道如果你想通过引用传递一个数组,你可以使用一个已知大小的数组 void add(char&arr)[60]) 但我只知道数组的大小将介于1和60之间(包括1和60)。有什么方法可以做到这一点吗?您可以使用模板来匹配任何类型和大小,使用静态断言来检查编译时传递的数组的大小: template<typename T, std::size_t N> void add(T (&arr)[N]) { static_assert(N <= 60, "wrong size

我知道如果你想通过引用传递一个数组,你可以使用一个已知大小的数组

void add(char&arr)[60])


但我只知道数组的大小将介于1和60之间(包括1和60)。有什么方法可以做到这一点吗?

您可以使用模板来匹配任何类型和大小,使用
静态断言来检查编译时传递的数组的大小:

template<typename T, std::size_t N>
void add(T (&arr)[N])
{
    static_assert(N <= 60, "wrong size");
    // ...
}
模板
无效添加(T&arr)[N])
{

静态断言(N其他选项,不使用模板:

void add(char* arr , int size);

请记住,临时数组名称正在“衰减”作为指向第一个元素的指针,一维数组可以作为指针传递。

可能重复的情况是,通过指针传递数组的确切方式不是通过引用传递?这是您自己对问题的解释。提问者问如何在不知道数组大小的情况下通过引用传递数组。我不想进入讨论论什么是“参照传递”方法。将指针传递到数组的第一个元素被视为通过引用传递。我很清楚,OP希望根据他的示例签名传递对数组的实际引用。然而,这是我的解释,由于您的答案在技术上是正确的,我只会指出它。