我對傳遞指針的工作原理有些困惑。C++將指針傳遞給函數(Howto)+ C++指針操作
比方說,我有以下功能和指針,...
編輯:
...我想用一個指向某個對象作爲函數的參數。
即:
void Fun(int Pointer){
int Fun_Ptr = ---Passed Pointer---;
//So that Fun_Ptr points to whatever ---Passed Pointer points to
的*指針和&指針符號之間,我很迷茫。我知道*指針指的是指向它的任何東西。
我是否在聲明中使用了void(int *指針)。當我使用該功能時呢?
您的幫助表示讚賞。
編輯2:
好的,我現在明白,使用在*聲明變量意味着一個指針將被傳遞。但是,當我使用該功能呢?
即
int main(){
int foo;
int *bar;
bar = foo;
Fun(bar);
}
編輯3: 好了,糾正我,如果我錯了:
根據上面的代碼中的約定:
欄= & FOO手段:使條指向內存中的foo
* bar = foo表示更改t他珍視杆指向等於任何FOO等於
如果我有一個第二指針(INT * OOF),則:
巴= OOF指:巴指向OOF指針
巴= * OOF指:巴指向值OOF點,但不與OOF指針本身
*巴= * OOF是指:該棒積分值更改爲到值OOF指向
& bar = & oof表示:將條指向的內存地址改爲與指向的內存地址相同
我有這個權限嗎?
編輯4:非常感謝所有的幫助(我希望我可以接受1個以上的答案,但我必須要接受第一個答案,我不確定社區wiki是如何工作的,但我會離開用這種方式進行編輯(如果你願意,可以隨意將它變成一個參考指南)。
您的第二次編輯幾乎是正確的,但是 – Tomas 2010-09-26 01:13:46
「這是否正確?」。不,你不希望'bar'等於*到'foo',你希望它指向*'foo'。這是通過操作員的地址完成的。 'bar = &foo;'。 – 2010-09-26 01:14:38
bar = foo,是無效的,因爲foo是一個int和bar指針。正確的代碼是「bar =&foo」,因爲作爲指針,bar只能存儲內存地址而不是int。對評論的答案抱歉。 – Tomas 2010-09-26 01:14:49