簡體   English   中英

如何在C++中通過引用傳遞數組元素?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM