Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/153.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/visual-studio-code/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 类型为‘;的引用初始化无效;短整型(&;)_C++ - Fatal编程技术网

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
是一个指针,而不是数组,尽管它是用
[]
声明的;