为了账号安全,请及时绑定邮箱和手机立即绑定

通过引用传递数组

通过引用传递数组

C++
开满天机 2019-08-06 14:10:32
通过引用传递数组如何通过引用传递静态分配的数组?void foo(int (&myArray)[100]){}int main(){     int a[100];     foo(a);}是否(&myArray)[100]有任何意义或只是通过引用传递任何数组的语法?我不明白单独的括号后跟大括号。谢谢。
查看完整描述

3 回答

?
catspeake

TA贡献1111条经验 获得超0个赞

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

编辑:一些澄清。

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

这三种是声明相同功能的不同方式。它们都被视为接受int *参数,您可以将任何大小的数组传递给它们。

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

这只接受100个整数的数组。您可以放心地使用sizeofx

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

这被解析为“引用数组” - 这是不合法的。


查看完整回答
反对 回复 2019-08-06
?
慕田峪9158850

TA贡献1794条经验 获得超7个赞

这只是必需的语法:

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

int通过引用参数名称传递100 的数组myArray;

void Func(int* myArray)

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

void Func(int (*myFunc)(double))

^传递函数指针。该函数返回一个int并取一个double。参数名称是myFunc


查看完整回答
反对 回复 2019-08-06
?
一只斗牛犬

TA贡献1784条经验 获得超2个赞

这是一种语法。在函数参数int (&myArray)[100]中,括起来的括号&myArray是必要的。如果你不使用它们,你将会传递一个array of references,因为它subscript operator []具有更高的优先级& operator

例如 int &myArray[100] // array of references

因此,通过使用type construction ()您告诉编译器您希望引用100个整数的数组。

例如 int (&myArray)[100] // reference of an array of 100 ints


查看完整回答
反对 回复 2019-08-06
  • 3 回答
  • 0 关注
  • 496 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信