我無法在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