Sono un po 'confuso su come funzionano i puntatori di passaggio.C++ Passing Pointer to Function (Howto) + Manipolazione puntatore C++
Diciamo che ho la seguente funzione e il puntatore, e ...
EDIT:
... voglio usare un puntatore a un oggetto come argomento nella funzione.
cioè .:
void Fun(int Pointer){
int Fun_Ptr = ---Passed Pointer---;
//So that Fun_Ptr points to whatever ---Passed Pointer points to
Tra il * Puntatore e & notazioni Pointer, sono molto confuso. So che * Puntatore significa dare qualunque cosa punti.
Inserisco void (int * pointer) nella dichiarazione. Che dire quando uso la funzione?
La vostra assistenza è apprezzata.
EDIT 2:
Ok, ora capire che utilizzando * variabile in una dichiarazione significa che dovrà essere passato un puntatore. Tuttavia, che dire quando uso la funzione?
cioè
int main(){
int foo;
int *bar;
bar = foo;
Fun(bar);
}
EDIT 3: Okay, mi corregga se sbaglio:
Secondo le convenzioni del codice di cui sopra:
bar = & mezzi foo : Rendi in memoria il punto della barra
* bar = foo significa Cambia t egli Valore che punti a barre per eguagliare qualunque foo pari
Se ho un secondo puntatore (int * oof), quindi:
bar = oof significa: punti a barre per il puntatore oof
bar = * oof significa: barra indica il valore che punti oOF, ma non al puntatore oOF stessa
* bar = * oof significa: modificare il valore che i punti di barre per il valore che i punti oOF a
& bar = & oof significa: cambia l'indirizzo di memoria che i punti della barra sono uguali all'indirizzo di memoria che non fa riferimento a
Ho diritto?
EDIT 4: Grazie mille per tutto il vostro aiuto (vorrei poter accettare più di una risposta, ma devo andare con la prima. in questo modo per il montaggio (sentiti libero di trasformarlo in una guida di riferimento se ti piace).
La seconda modifica è quasi corretta, tuttavia – Tomas
"È corretto?". No. Non vuoi che 'bar' sia * uguale * a' foo', vuoi che * punti a * 'foo'. Questo viene fatto con l'operatore address-of. 'bar = &foo;'. –
bar = foo, non è valido, poichè foo è un int e bar un puntatore. Il codice corretto è "bar = & foo" perché come un puntatore, la barra può solo memorizzare gli indirizzi di memoria non un int. Ci scusiamo per le risposte ai commenti. – Tomas