[英]Confusion over C++ pointer and reference topic
C ++中以下參數傳遞機制之間的區別是什么?
void foo(int &x)
void foo(int *x)
void foo(int **x)
void foo(int *&x)
我想知道在哪種情況下參數是通過值傳遞還是通過引用傳遞。
void foo(int &x)
將引用傳遞給整數。 這是一個輸入/輸出參數,可以像函數中的常規整數一樣使用。 值被傳回給調用者。
void food(int *x)
將指針傳遞給整數。 這是一個輸入/輸出參數,但其用法類似於指針,必須取消引用(例如*x = 100;
)。 您還需要檢查它是否不為空。
void foo(int **x)
將指針傳遞給指向整數的指針。 這是整數指針類型的輸入/輸出參數。 如果要更改整數點的值,請使用此值(例如*x = &m_myInt;
)。
void foo(int *&x)
將引用傳遞給指向整數的指針。 像上面一樣,但無需取消引用指針變量(例如x = &m_myInt;
)。
希望有道理。 我建議使用typedefs來簡化指針和引用符號的使用。
只需補充:我認為您的間距會誤導您。 如果您進行更改,情況可能會變得更加清晰。
,&,*等是該類型的一部分,因此請保留該類型:
void foo(int& x)
void foo(int* x)
void foo(int** x)
void foo(int*& x)
int&是對int的引用,int *是對int的指針,int **是對int的指針,依此類推。 您仍然需要從右到左讀取類型-int *&是對指向int的指針的引用。 但這是一致的。
我認為這更容易閱讀,代表的含義更好。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.