我看到有人在一個答案用這個這是什麼意思const int *&var?
void methodA(const int*& var);
,但不明白的說法是什麼意思。
AFAIK:
const int var
=>不能被改變const int* var
=>指針爲int是常量,即*變種不能被改變,但變種可以是常數值改變const int& var
=>參考const int的即變種的值不能被改變
是什麼意思const int*& var
,並const int& *var
也可能嗎?
能否請您舉一些例子還有,像什麼可以做,什麼不能用它做?
UPDATE:
我不知道如果我想正確的方式,但我開始想引用因爲這是通作爲參數變量的別名,所以 const int的* p; 了methodA(P)=>在這裏我們通過數p作爲const int的*,但我們不知道這是否是按值傳遞還是什麼,直到我們看到方法的定義,
所以如果了methodA是這樣 了methodA( const int的* & P2)==>在這裏p2的另一個名字爲p,即p和p2是相同的,從現在開始 如果了methodA(const int的* P2)==>這裏P2作爲價值即p2的傳遞只是局部這種方法,
如果我想錯誤的方式,請糾正我?如果是的話,我可能需要進一步研究一下這個?你能指出一些很好的參考嗎?
更新2 如果像我這樣的初學者一些想知道更多關於這件事,你可以使用C++東方電氣/CDECL程序,我只是發現非常有用從here
$ c++decl
Type `help' or `?' for help
c++decl> explain const int&* p
declare p as pointer to reference to const int
c++decl> explain const int*& p
declare p as reference to pointer to const int
但是正如這裏所指出的,第一個例子在C++中不合法。
由於
第三種方法baz,ConstIntPointer == const int * var,這是怎麼傳值的,還有指針參與?我現在很困惑。 – 2009-08-10 22:20:32
指針自己需要空間。指針是存儲另一個變量地址的變量。它將複製該值,將其推入堆棧並調用該函數。 – GManNickG 2009-08-10 22:22:21
您正在傳遞存儲在指針中的值(即內存地址)。 – 2009-08-10 22:22:50