我无法在myfunc()
内创建对unsigned char
数组z
的引用。我尝试了几种方法,但无法弄清楚。这是我最近一次尝试:C++对数组的引用
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;
}
我收到以下错误:
error: in passing argument 2 of ‘int myfunc(int&, unsigned char (&)[2])’
对于线int myfunc (int &y, unsigned char (&z)[2]);
和:
error: invalid initialization of reference of type ‘unsigned char (&)[2]’ from expression of type ‘unsigned char’
对于线int x = myfunc(y, x);
我该如何引用它自己的数组(而不是引用数组?)?
使用向量使得这非常简单,而且比原始数组要好得多。无论如何,你通过传入一个元素来调用你的函数。使用'z',而不是'z [2]'。 – chris
我正在尝试沿着这一边学习矢量,这将如何让这更容易?我能看到做这项工作的唯一方法是让数组在全局范围内定义,据我所知它并不好。 – jwbensley
使用一个向量,你的签名是:'int myfunc(int&y,std :: vector&z)'。它们提供了使用其他类型参数所期望的语法。 –
chris