[英]How to pass array element by reference in c++?
是否可以通過引用傳遞單個數組元素(以便修改傳入的參數)? 例如,假設這是一個主要部分:
int ar[5] = {1,2,3,4,5};
test(&ar[2]);
現在這是函數定義:
void test(int &p)
{
p = p + 10;
return;
}
上面的代碼導致編譯錯誤。
&ar[2]
獲取數組中第 3 位元素的地址。 因此,您嘗試將int*
傳遞給需要int&
的函數。 通常,您不需要對表達式做任何事情來使其被視為引用,因為引用只是存在於其他地方的某個對象的另一個名稱。 (這會導致混淆,因為它有時似乎表現得像一個指針)。
只需傳遞ar[2]
,對象本身:
test(ar[2]);
如果您將數組放在一側並使用int
,也許會更清楚。
void test (int &p);
// ...
int a = 54321;
test(a); // just pass a, not a pointer to a
只是為了提供 BobTFish 答案的替代方案。 如果您需要傳遞地址,那么您的函數定義需要接受一個指針作為參數。
void test(int *arg);
// ...
int arg = 1234;
test(&arg);
要使用數組元素的地址,請執行以下操作:
void test(int *arg);
// ...
int arg[0] = 1234;
test(&arg[0]);
有些人在數組元素中添加括號: &(arg[0])
,這在有疑問時很好,但是[]
運算符的優先級高於&
運算符。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.