Я не могу создать ссылку на массив unsigned char
z
в пределах myfunc()
. Я пробовал несколько способов, но просто не могу понять. Это моя последняя попытка: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