c ++对数组的引用

jwb*_*ley 1 c++ char pass-by-reference

我不能创建到一个参考unsigned char阵列z内myfunc().我已经尝试了几种方法但是无法弄明白.这是我最近的尝试:

int myfunc (int &y, unsigned char (&z)[2]);

int main(int argc, char *argv[]) {
 int y = 1;
 unsigned char z[2];

 int x = myfunc(y, z[2]);
}

int myfunc(int &y, unsigned char (&z)[2]) {
 y = 123;
 z[0] = foo;
 z[1] = bar;
 return 456;
}
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

error: in passing argument 2 of ‘int myfunc(int&, unsigned char (&)[2])’
Run Code Online (Sandbox Code Playgroud)

对于线 int myfunc (int &y, unsigned char (&z)[2]);

和:

error: invalid initialization of reference of type ‘unsigned char (&)[2]’ from expression of type ‘unsigned char’
Run Code Online (Sandbox Code Playgroud)

对于线 int x = myfunc(y, x);

我应该如何引用它自己的数组(而不是引用数组?)?

Dav*_*eas 10

myfunc(y, z[2]);
Run Code Online (Sandbox Code Playgroud)

表达式z[2]是类型unsigned char(并且指的是超出数组末尾的元素,因此它是未定义的行为).你想做:

myfunc(y, z);
Run Code Online (Sandbox Code Playgroud)