[英]c++ reference to array
我無法在myfunc()
創建對unsigned char
數組z
的引用。 我嘗試了幾種方法,但無法弄清楚。 這是我最近的嘗試:
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]);
行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);
我應該如何引用自身的數組(而不是引用數組?)?
myfunc(y, z[2]);
表達式z[2]
的類型為unsigned char
(並且指向數組末尾的元素,因此它是未定義的行為)。 您想做:
myfunc(y, z);
調用應為: int x = myfunc(y, z);
這是因為z
表示unsigned char [2]
而z[2]
表示char
類型。 z[2]
訪問數組。
我對您要做什么感到有些困惑。 恕我直言,您的簽名應該只是int myfunc (int &y, unsigned char z[2])
。
數組不會“按值”傳遞(如果您想這樣做,那么使用向量是最簡單的方法),並且默認值可使get_mac
函數(我認為應該是myfunc
)按需要工作(除非我誤解了你的願望)。
簽名int myfunc (int &y, unsigned char (&z)[2])
建議您可能要在調用方中更改z
本身的值(不僅是z
元素),但是即使調用方也無法做到這一點( !),如果嘗試,將會收到錯誤消息。 如果需要,請使用實際的指針。
存在用於使用語法在你的例子,這是為了執行聲明數組大小通過引用傳遞的陣列的合法使用。 但是,如果您只是在學習,我認為您不必為此擔心。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.