Jestem trochę zdezorientowany, jak działają wskaźniki przejścia.C++ Przekazywanie wskaźnika do funkcji (Howto) + manipulacja wskaźnikiem C++
Powiedzmy mam następujące funkcje i wskaźnik, a ...
EDIT:
... Chcę użyć wskaźnika do jakiegoś przedmiotu jako argument funkcji.
tj .:
void Fun(int Pointer){
int Fun_Ptr = ---Passed Pointer---;
//So that Fun_Ptr points to whatever ---Passed Pointer points to
Między * wskaźnik i & Pointer zapisów, jestem bardzo mylić. Wiem, że * Wskaźnik oznacza dawanie tego, co wskazuje.
Czy wstawię pustą (int * wskaźnik) w deklaracji. A co z tym, kiedy używam tej funkcji?
Twoja pomoc jest doceniana.
EDIT 2:
Ok, teraz rozumiem, że za pomocą * zmienna w deklaracji oznacza, że wskaźnik zostanie przekazany. Co jednak z tym, kiedy korzystam z tej funkcji?
tj
int main(){
int foo;
int *bar;
bar = foo;
Fun(bar);
}
EDIT 3: Ok, więc poprawcie mnie jeśli się mylę:
Zgodnie z konwencjami powyższego kodu:
bar = & środki Foo : Spraw, aby pasek wskazywał foo w pamięci
* słupek = foo oznacza Zmień t on wartość, która punkty kreskowych do dorównać cokolwiek foo równa
Jeśli mam drugi wskaźnik (int * oof), a następnie:
bar = oof oznacza: punkty kreskowe do wskaźnika oof
bar = * oof oznacza: punkty bar do wartości, które OOF punkty, ale nie do wskaźnika oof samego
* bar = * oof oznacza: Zmień wartość punktów kreskowych do wartości że punkty OOF do
& bar = & oof oznacza: zmień adres pamięci tak, aby były takie same, jak adres pamięci, który wskazuje na:
Czy mam to prawo?
EDYCJA 4: Wielkie dzięki za twoją pomoc (chciałbym przyjąć więcej niż jedną odpowiedź, ale muszę iść z pierwszą.) Nie jestem pewien, jak działa wiki społecznościowe, ale odejdę w ten sposób do edycji (jeśli wolisz, możesz go zamienić w poradnik).
Twoja druga edycja jest prawie poprawna, jednak – Tomas
"Czy to prawda?". Nie. Nie chcesz, aby 'bar' był równy * dla' foo', chcesz żeby * wskazywał * 'foo'. Odbywa się to za pomocą operatora adresu. 'bar = &foo;'. –
bar = foo, jest nieprawidłowy, ponieważ foo jest int i wskazuje wskaźnik. Poprawny kod to "bar = i foo", ponieważ jako wskaźnik, pasek może przechowywać tylko adresy pamięci, a nie int. Przepraszamy za odpowiedź na komentarz. – Tomas