Prethodna tema :: Sljedeća tema |
Autor/ica |
Poruka |
patakenjac Forumaš(ica)
Pridružen/a: 23. 10. 2011. (17:34:05) Postovi: (2F)16
|
|
[Vrh] |
|
vsego Site Admin
Pridružen/a: 06. 10. 2002. (22:07:09) Postovi: (3560)16
Spol:
Lokacija: /sbin/init
|
Postano: 19:44 uto, 17. 1. 2012 Naslov: |
|
|
[code:1]int *x, a;
x = &a; /* u x smo spremili adresu od a */
a = 13; /* a ima vrijednost 13 */
*x = 17; /* memorijska lokacija ciju adresu sadrzi x dobija vrijednost 17 */
printf("%d\n", a); /* ispisuje 17, jer smo tu vrijednost pridijelili prethodnom naredbom */[/code:1]
Varijabla [tt]x[/tt] sadrzi adresu varijable a, pa je [tt]*x[/tt] isto sto i [tt]a[/tt].
Baci oko na crteze u mojoj skripti.
Kod: | int *x, a;
x = &a; /* u x smo spremili adresu od a */
a = 13; /* a ima vrijednost 13 */
*x = 17; /* memorijska lokacija ciju adresu sadrzi x dobija vrijednost 17 */
printf("%d\n", a); /* ispisuje 17, jer smo tu vrijednost pridijelili prethodnom naredbom */ |
Varijabla x sadrzi adresu varijable a, pa je *x isto sto i a.
Baci oko na crteze u mojoj skripti.
_________________ U pravilu ignoriram pitanja u krivim topicima i kodove koji nisu u [code]...[/code] blokovima.
Takodjer, OBJASNITE sto vas muci! "Sto mi je krivo?", bez opisa u cemu je problem, rijetko ce zadobiti moju paznju.
|
|
[Vrh] |
|
pecina Forumaš(ica)
Pridružen/a: 19. 01. 2005. (14:15:23) Postovi: (157)16
Spol:
Lokacija: Happily traveling through space since 1986!
|
Postano: 10:41 sri, 18. 1. 2012 Naslov: |
|
|
& ti je [i]address of[/i] operator koji vraća adresu varijable.
* ti je operator dereferenciranja
Zamisli varijablu kao kutiju sa sadržajem. Zamisli da su sve kutije indeksirane i nalaze se u pretincima.
Sad, korištenje kutije x dobivaš sadržaj te kutije. &x ti daje adresu te kutije. To je ujedno i pokazivač na tu kutiju
int x = 5; // ja sam kutija koja sadrži broj 5
int *px = &x; // ja sam kutija koja sadrži adresu varijable x
Kad mijenjaš px, mijenjaš sadržaj te kutije odnosno [i]na što[/i] ona pokazuje. Ako želiš doći do onoga na što ona pokazuje, dereferenciraš varijablu s operatorm *:
int x = 5;
int y = 6;
int *p = &x; // p pokazuje na x
x = 7; // x mijenja vrijednost, p i dalje pokazuje na x
printf("%d", *p); // ispisuje 7
p = &y; // mijenjamo sam pokazivač, vrijednost njegove kutije
*p = 8; // sada je y == 8 jer smo došli do onoga na što pokazuje p
& ti je address of operator koji vraća adresu varijable.
* ti je operator dereferenciranja
Zamisli varijablu kao kutiju sa sadržajem. Zamisli da su sve kutije indeksirane i nalaze se u pretincima.
Sad, korištenje kutije x dobivaš sadržaj te kutije. &x ti daje adresu te kutije. To je ujedno i pokazivač na tu kutiju
int x = 5; // ja sam kutija koja sadrži broj 5
int *px = &x; // ja sam kutija koja sadrži adresu varijable x
Kad mijenjaš px, mijenjaš sadržaj te kutije odnosno na što ona pokazuje. Ako želiš doći do onoga na što ona pokazuje, dereferenciraš varijablu s operatorm *:
int x = 5;
int y = 6;
int *p = &x; // p pokazuje na x
x = 7; // x mijenja vrijednost, p i dalje pokazuje na x
printf("%d", *p); // ispisuje 7
p = &y; // mijenjamo sam pokazivač, vrijednost njegove kutije
*p = 8; // sada je y == 8 jer smo došli do onoga na što pokazuje p
_________________ -- space available for rent --
|
|
[Vrh] |
|
Vishykc Forumaš(ica)
Pridružen/a: 23. 10. 2010. (14:38:08) Postovi: (6A)16
Spol:
Lokacija: Zagreb
|
Postano: 10:52 sri, 18. 1. 2012 Naslov: |
|
|
[quote="pecina"]& ti je [i]address of[/i] operator koji vraća adresu varijable.
* ti je operator dereferenciranja
Zamisli varijablu kao kutiju sa sadržajem. Zamisli da su sve kutije indeksirane i nalaze se u pretincima.
Sad, korištenje kutije x dobivaš sadržaj te kutije. &x ti daje adresu te kutije. To je ujedno i pokazivač na tu kutiju
int x = 5; // ja sam kutija koja sadrži broj 5
int *px = &x; // ja sam kutija koja sadrži adresu varijable x
Kad mijenjaš px, mijenjaš sadržaj te kutije odnosno [i]na što[/i] ona pokazuje. Ako želiš doći do onoga na što ona pokazuje, dereferenciraš varijablu s operatorm *:
int x = 5;
int y = 6;
int *p = &x; // p pokazuje na x
x = 7; // x mijenja vrijednost, p i dalje pokazuje na x
printf("%d", *p); // ispisuje 7
p = &y; // mijenjamo sam pokazivač, vrijednost njegove kutije
*p = 8; // sada je y == 8 jer smo došli do onoga na što pokazuje p[/quote]
Lijepo objašnjeno. A koja je razlika između toga kad deklariramo:
int p = &y
int *p = &y
?
pecina (napisa): | & ti je address of operator koji vraća adresu varijable.
* ti je operator dereferenciranja
Zamisli varijablu kao kutiju sa sadržajem. Zamisli da su sve kutije indeksirane i nalaze se u pretincima.
Sad, korištenje kutije x dobivaš sadržaj te kutije. &x ti daje adresu te kutije. To je ujedno i pokazivač na tu kutiju
int x = 5; // ja sam kutija koja sadrži broj 5
int *px = &x; // ja sam kutija koja sadrži adresu varijable x
Kad mijenjaš px, mijenjaš sadržaj te kutije odnosno na što ona pokazuje. Ako želiš doći do onoga na što ona pokazuje, dereferenciraš varijablu s operatorm *:
int x = 5;
int y = 6;
int *p = &x; // p pokazuje na x
x = 7; // x mijenja vrijednost, p i dalje pokazuje na x
printf("%d", *p); // ispisuje 7
p = &y; // mijenjamo sam pokazivač, vrijednost njegove kutije
*p = 8; // sada je y == 8 jer smo došli do onoga na što pokazuje p |
Lijepo objašnjeno. A koja je razlika između toga kad deklariramo:
int p = &y
int *p = &y
?
_________________ U matematici se sve smije, osim pogriješiti!
|
|
[Vrh] |
|
pecina Forumaš(ica)
Pridružen/a: 19. 01. 2005. (14:15:23) Postovi: (157)16
Spol:
Lokacija: Happily traveling through space since 1986!
|
|
[Vrh] |
|
anmazann Forumaš(ica)
Pridružen/a: 01. 11. 2011. (11:49:23) Postovi: (4)16
Spol:
|
|
[Vrh] |
|
slonic~tonic Forumaš(ica)
Pridružen/a: 26. 10. 2011. (14:16:34) Postovi: (84)16
Spol:
|
|
[Vrh] |
|
vsego Site Admin
Pridružen/a: 06. 10. 2002. (22:07:09) Postovi: (3560)16
Spol:
Lokacija: /sbin/init
|
Postano: 1:07 čet, 19. 1. 2012 Naslov: |
|
|
Ako ti je jasno kako radi za [tt]int[/tt], onda ovdje primijeni to isto na tip [tt]int*[/tt]. Sve isto, samo umjesto [tt]int[/tt] i [tt]*x = 17;[/tt] (i slicne naredbe) pises [tt]int*[/tt] i [tt]x* = NULL;[/tt] (dakle, pridruzujes adresu, a ne broj). Analogno tome, u headeru funkcije [tt]int*[/tt] postaje [tt]int**[/tt].
Ako ti je jasno kako radi za int, onda ovdje primijeni to isto na tip int*. Sve isto, samo umjesto int i *x = 17; (i slicne naredbe) pises int* i x* = NULL; (dakle, pridruzujes adresu, a ne broj). Analogno tome, u headeru funkcije int* postaje int**.
_________________ U pravilu ignoriram pitanja u krivim topicima i kodove koji nisu u [code]...[/code] blokovima.
Takodjer, OBJASNITE sto vas muci! "Sto mi je krivo?", bez opisa u cemu je problem, rijetko ce zadobiti moju paznju.
|
|
[Vrh] |
|
|