C++ 类型为‘;的引用初始化无效;短整型(&;)
我试图将数组传递给函数,但我遇到了一个奇怪的错误C++ 类型为‘;的引用初始化无效;短整型(&;),c++,C++,我试图将数组传递给函数,但我遇到了一个奇怪的错误 const int size = 2; void foo(short (&a)[size]){ cout << a; } void testSequence(short a[size]){ foo(a); } const int size=2; 无效foo(短(&a)[大小]){ 当您声明这样的函数参数时 short a[size] 您正在声明指针,而不是数组: [dcl.fct]在确定 每个参数的类型,“T数组”
const int size = 2;
void foo(short (&a)[size]){
cout << a;
}
void testSequence(short a[size]){
foo(a);
}
const int size=2;
无效foo(短(&a)[大小]){
当您声明这样的函数参数时
short a[size]
您正在声明指针,而不是数组:
[dcl.fct]在确定
每个参数的类型,“T数组”类型或函数类型T的任何参数都调整为“指向T的指针”
foo(short(&a)[size])
要求引用大小为size
的数组。指针不能转换为指针。声明
void testSequence(short a[size]);
与
void testSequence(short a[]);
void testSequence(short* a);
这和
void testSequence(short a[]);
void testSequence(short* a);
因此,呼吁
foo(a);
来自函数的值无效
为了能够使用
foo(a);
您必须使用:
void testSequence(short (&a)[size]){
foo(a);
}
线路
cout << a;
错误信息非常清楚。当函数需要对4个short
s数组的引用时,您正在将short
传递给该函数。roters是一个数组,它作为一个参数传递,当我试图将其传递给下一个函数时,它不能传递a,那么。数组不是指针。testSequ中的roters
ence
是一个指针,而不是数组,尽管它是用[]
声明的;