如何通过引用传递数组?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (45)

如何通过引用传递静态分配的数组?

void foo(int (&myArray)[100])
{
}

int main()
{
    int a[100];
    foo(a);
}

是吗?(&myArray)[100]是否有任何意义,或它只是一个语法传递任何数组的引用?我不明白这里的括号后面是大括号。

提问于
用户回答回答于

这只是必需的语法:

void Func(int (&myArray)[100])

^PASS数组为100int通过引用参数名称是myArray

void Func(int* myArray)

^传递一个数组。数组衰减到指针。因此,您将丢失大小信息。

void Func(int (*myFunc)(double))
用户回答回答于

这是数组引用的语法--您需要使用(&array)向编译器说明您希望引用数组,而不是引用的(无效)数组。int & array[100];

编辑:一些澄清。

void foo(int * x);
void foo(int x[100]);
void foo(int x[]);

这三种声明相同函数的方法是不同的。他们都被视为int *参数,则可以将任意大小的数组传递给它们。

void foo(int (&x)[100]);

这只接受由100个整数组成的数组。你可以安全地使用sizeof

void foo(int & x[100]); // error

扫码关注云+社区