Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Wskaźniki - czego tu nie rozumiem

Ostatnio zmodyfikowano 2015-09-03 15:59
Autor Wiadomość
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?
P-137220
pekfos
» 2015-09-03 15:32:17
*ptr, to nie to samo, co int *ptr.
P-137221
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?
P-137223
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

C/C++
cout << " *ad = " << * ad << " ad " << ad;
//przeładowanie opreatorów. W obu przypadkach tak naprawdę odpalają się inne funkcje:)
cout << * ad;
//właściwie wykonuje się funkcja
cout.operator <<( int add );
//a dla drugiego przypadku
cout << ad;
// tak naprawdę wywołuje się funkcja.
cout.operator <<( int * add );
[ code ]
Obie musz ą by ć zdefiniowane w bibliotece standardowej: ) i w obu funkcjach s ą tak naprawd ę r ó ż ne argumenty !!!
P-137224
pekfos
» 2015-09-03 15:52:12
Tak. Samo *ptr to już jest operacja na zmiennej (dereferencja).
P-137225
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.
P-137226
« 1 »
  Strona 1 z 1