3 回答

TA貢獻1111條經驗 獲得超0個贊
它是數組引用的語法 - 您需要使用它(&array)
來向編譯器說明您希望引用數組,而不是(無效)引用數組int & array[100];
。
編輯:一些澄清。
void foo(int * x);void foo(int x[100]);void foo(int x[]);
這三種是聲明相同功能的不同方式。它們都被視為接受int *
參數,您可以將任何大小的數組傳遞給它們。
void foo(int (&x)[100]);
這只接受100個整數的數組。您可以放心地使用sizeof
上x
void foo(int & x[100]); // error
這被解析為“引用數組” - 這是不合法的。

TA貢獻1794條經驗 獲得超8個贊
這只是必需的語法:
void Func(int (&myArray)[100])
^ int
通過引用參數名稱傳遞100 的數組myArray
;
void Func(int* myArray)
^傳遞一個數組。數組衰減為指針。因此,您丟失了大小信息。
void Func(int (*myFunc)(double))
^傳遞函數指針。該函數返回一個int
并取一個double
。參數名稱是myFunc
。

TA貢獻1784條經驗 獲得超2個贊
這是一種語法。在函數參數int (&myArray)[100]
中,括起來的括號&myArray
是必要的。如果你不使用它們,你將會傳遞一個array of references
,因為它subscript operator []
具有更高的優先級& operator
。
例如 int &myArray[100] // array of references
因此,通過使用type construction ()
您告訴編譯器您希望引用100個整數的數組。
例如 int (&myArray)[100] // reference of an array of 100 ints
- 3 回答
- 0 關注
- 521 瀏覽
添加回答
舉報