通过引用传递静态分配的数组是如何工作的?
void foo(int (&myArray)[100])
{
}
int main()
{
int a[100];
foo(a);
}
Does (&myArray)[100]
有什么意义或者只是通过引用传递任何数组的语法?
我不明白这里的单独括号后面跟着大括号。谢谢。
这是数组引用的语法 - 您需要使用(&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
on x
void foo(int & x[100]); // error
这被解析为“引用数组”——这是不合法的。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)