Wskaźniki - czego tu nie rozumiem
Ostatnio zmodyfikowano 2015-09-03 15:59
cppCross Temat założony przez niniejszego użytkownika |
Wskaźniki - czego tu nie rozumiem » 2015-09-03 15:24:25 Witam, Jeżeli 1): int variable = 5; int *ad = &variable; daje ten sam wynik co 2): int *ad; ad = &variable; to rozumiem to tak: z 1) *ad (element w komórce o adresie ad) = &variable ( = adresowi zmiennej variable) z 2) ad (czyli adres komórki) = &variable ( = adresowi zmiennej variable)
Opcja 2) wydaje mi się logiczna jednak 1) nie, gdyż *ad, czyli powiedzmy jakaś konkretna liczba jest równa adresowi. Jednak w obu opcjach: cout << " *ad = " << *ad << " ad " << ad; daje taki sam rezultat. Gdzie jest problem w moim rozumowaniu? |
|
pekfos |
» 2015-09-03 15:32:17 *ptr, to nie to samo, co int *ptr. |
|
cppCross Temat założony przez niniejszego użytkownika |
» 2015-09-03 15:47:58 czyli int *wsk jest deklaracją, więc przypisuję do niej adres? |
|
mateczek |
czytanie deklaracji odsyłam do symfonii c++ wyjaśnione jest wzorowo » 2015-09-03 15:51:47 int *ptr; czytamy ptr jest wskaźnikiem pokazującym na zmienną typu int Do wskaźnika przypisujemy adres. Więc poprawne jest ptr = &variable
gdzie "&" - opreator wyłuskania adresu *ptr - czytamy "to na co pokazuje wskaźnik ptr" *ptr = 5 //czytamy: przypisz wartość 5 zmiennej pokazywanej przez wskaźnik ptr
cout << " *ad = " << * ad << " ad " << ad;
cout << * ad;
cout.operator <<( int add );
cout << ad;
cout.operator <<( int * add ); [ code ] Obie musz ą by ć zdefiniowane w bibliotece standardowej: ) i w obu funkcjach s ą tak naprawd ę r ó ż ne argumenty !!! |
|
pekfos |
» 2015-09-03 15:52:12 Tak. Samo *ptr to już jest operacja na zmiennej (dereferencja). |
|
cppCross Temat założony przez niniejszego użytkownika |
» 2015-09-03 15:59:38 Aha, chodziło mi o: int *ptr = &var; już rozumiem, dziękuję za pomoc. |
|
« 1 » |