Prethodna tema :: Sljedeća tema |
Autor/ica |
Poruka |
Masiela Forumaš(ica)


Pridružen/a: 11. 09. 2007. (22:28:01) Postovi: (338)16
Spol: 
Lokacija: Među bananama
|
|
[Vrh] |
|
arya Forumaš(ica)


Pridružen/a: 30. 11. 2006. (20:10:37) Postovi: (233)16
Spol: 
Lokacija: forum
|
Postano: 21:22 čet, 7. 2. 2008 Naslov: |
|
|
dakle, probat ću nekak objasnit... ne garantiram da je točno, tak ja shvaćam :) argument funkcije ti je x, koji je tipa int*(pointer na int), a ova druga * ti je zbog toga jer je to varijabilni arg( kao što i inače kad radiš nešto s var. arg. stavljaš ispred njega zvjezdicu u deklaraciji funkcije)...zato imaš int** x... i u funkciji ti se taj pointer na int treba poništiti... zbog toga jer je varijabilan, u funkciji ga koristiš sa *x, kao uvijek kod varijabilnih parametara... i ideš ga poništavat, tj. staviš da je jednak NULL( null-pointer)... znači sad je x postao null-pointer... a to je i bio cilj :)
dakle, probat ću nekak objasnit... ne garantiram da je točno, tak ja shvaćam argument funkcije ti je x, koji je tipa int*(pointer na int), a ova druga * ti je zbog toga jer je to varijabilni arg( kao što i inače kad radiš nešto s var. arg. stavljaš ispred njega zvjezdicu u deklaraciji funkcije)...zato imaš int** x... i u funkciji ti se taj pointer na int treba poništiti... zbog toga jer je varijabilan, u funkciji ga koristiš sa *x, kao uvijek kod varijabilnih parametara... i ideš ga poništavat, tj. staviš da je jednak NULL( null-pointer)... znači sad je x postao null-pointer... a to je i bio cilj
_________________ kalendar

|
|
[Vrh] |
|
Masiela Forumaš(ica)


Pridružen/a: 11. 09. 2007. (22:28:01) Postovi: (338)16
Spol: 
Lokacija: Među bananama
|
|
[Vrh] |
|
arya Forumaš(ica)


Pridružen/a: 30. 11. 2006. (20:10:37) Postovi: (233)16
Spol: 
Lokacija: forum
|
Postano: 22:09 čet, 7. 2. 2008 Naslov: |
|
|
da, u glavnom imaš int* x, x je pointer na int... i ideš mijenjati u f-ji njegovu vrijednost (zato int** x)... u funkciju ga šalješ sa &x... dakle, adresu, pa se promjena vidi i u glavnom programu :)
sa NULL dobiješ da ti je x null-pointer, poništavaš x, postavljaš ga na NULL... a uvijek imaš x, to ti je varijabla... tipa pointer na int( int*)... x i dalje ostaje pointer na int... samo je sad postavljen na vrijednost NULL... na početku je mogao bit nešto drugo, i sad ga ti u f-ji postavljaš na NULL... ali i dalje ti je x varijabla tipa pointer na int :)
da, u glavnom imaš int* x, x je pointer na int... i ideš mijenjati u f-ji njegovu vrijednost (zato int** x)... u funkciju ga šalješ sa &x... dakle, adresu, pa se promjena vidi i u glavnom programu
sa NULL dobiješ da ti je x null-pointer, poništavaš x, postavljaš ga na NULL... a uvijek imaš x, to ti je varijabla... tipa pointer na int( int*)... x i dalje ostaje pointer na int... samo je sad postavljen na vrijednost NULL... na početku je mogao bit nešto drugo, i sad ga ti u f-ji postavljaš na NULL... ali i dalje ti je x varijabla tipa pointer na int
_________________ kalendar

|
|
[Vrh] |
|
Masiela Forumaš(ica)


Pridružen/a: 11. 09. 2007. (22:28:01) Postovi: (338)16
Spol: 
Lokacija: Među bananama
|
|
[Vrh] |
|
vsego Site Admin


Pridružen/a: 06. 10. 2002. (22:07:09) Postovi: (3562)16
Spol: 
Lokacija: /sbin/init
|
Postano: 22:34 čet, 7. 2. 2008 Naslov: |
|
|
Recimo da zelis ovako nesto:
[code:1]void nullify(int *x) {
x = NULL;
}
int main(void) {
int *x;
nullify(x); // zamjena za x = NULL (ali neispravna!)
...
}[/code:1]
da bi ti [tt]x[/tt] postao nul-pointer, onda to ne mozes napraviti kako sam sada napisao, nego ti treba pointer na pointer:
[code:1]void nullify(int **x) {
x = NULL;
}
int main(void) {
int *x;
nullify(&x); // zamjena za x = NULL
...
}[/code:1]
Ocito, takva funkcija nije jako korisna, no recimo da zelim funkciju koja dinamicki alocira niz [tt]int[/tt]ova, ucitava ga i onda sa [tt]return[/tt] vraca duljinu niza. :-s To znaci da sam niz (tj. pointer na prvi element) moras vratiti kao argument funkcije. :) Tome sluzi ovaj "zadatak": da pokaze kako se radi kad u funkciji zelimo mijenjati pointer. 8)
Dinamicka alokacija se radi u drugom semestru i zato ovdje ne moze biti ozbiljniji primjer. ;)
Recimo da zelis ovako nesto:
Kod: | void nullify(int *x) {
x = NULL;
}
int main(void) {
int *x;
nullify(x); // zamjena za x = NULL (ali neispravna!)
...
} |
da bi ti x postao nul-pointer, onda to ne mozes napraviti kako sam sada napisao, nego ti treba pointer na pointer:
Kod: | void nullify(int **x) {
x = NULL;
}
int main(void) {
int *x;
nullify(&x); // zamjena za x = NULL
...
} |
Ocito, takva funkcija nije jako korisna, no recimo da zelim funkciju koja dinamicki alocira niz intova, ucitava ga i onda sa return vraca duljinu niza. To znaci da sam niz (tj. pointer na prvi element) moras vratiti kao argument funkcije. Tome sluzi ovaj "zadatak": da pokaze kako se radi kad u funkciji zelimo mijenjati pointer.
Dinamicka alokacija se radi u drugom semestru i zato ovdje ne moze biti ozbiljniji primjer.
_________________ 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] |
|
Luuka Forumaš(ica)


Pridružen/a: 13. 02. 2007. (20:34:54) Postovi: (925)16
Spol: 
Lokacija: Hakuna Matata
|
|
[Vrh] |
|
arya Forumaš(ica)


Pridružen/a: 30. 11. 2006. (20:10:37) Postovi: (233)16
Spol: 
Lokacija: forum
|
Postano: 22:36 čet, 7. 2. 2008 Naslov: |
|
|
nije ti moglo pisat umjesto NULL 5, jer je x pointer na int, ne broj :) u f-ji ti je *x isto tipa pointer na int( ne int) jer je var. parametar... ova zvjezdica označava tu varijabilnost... dakle, ti u funkciji možeš pisat *x=nekakav pointer na int... jer je x tog tipa... i onda će u glavnom programu x postat to što si mu pridružila u funkciji... ne mijenja se *x, nego x :) a NULL je oznaka za null-pointer... jeste vi uopće do sad radili pointere baš detaljno ili ne?
ispričavam se ak slučajno pišem gluposti, ak netko primijeti tako nešto, nek me slobodno ispravi :)
nije ti moglo pisat umjesto NULL 5, jer je x pointer na int, ne broj u f-ji ti je *x isto tipa pointer na int( ne int) jer je var. parametar... ova zvjezdica označava tu varijabilnost... dakle, ti u funkciji možeš pisat *x=nekakav pointer na int... jer je x tog tipa... i onda će u glavnom programu x postat to što si mu pridružila u funkciji... ne mijenja se *x, nego x a NULL je oznaka za null-pointer... jeste vi uopće do sad radili pointere baš detaljno ili ne?
ispričavam se ak slučajno pišem gluposti, ak netko primijeti tako nešto, nek me slobodno ispravi
_________________ kalendar

|
|
[Vrh] |
|
Masiela Forumaš(ica)


Pridružen/a: 11. 09. 2007. (22:28:01) Postovi: (338)16
Spol: 
Lokacija: Među bananama
|
|
[Vrh] |
|
Masiela Forumaš(ica)


Pridružen/a: 11. 09. 2007. (22:28:01) Postovi: (338)16
Spol: 
Lokacija: Među bananama
|
|
[Vrh] |
|
vsego Site Admin


Pridružen/a: 06. 10. 2002. (22:07:09) Postovi: (3562)16
Spol: 
Lokacija: /sbin/init
|
|
[Vrh] |
|
arya Forumaš(ica)


Pridružen/a: 30. 11. 2006. (20:10:37) Postovi: (233)16
Spol: 
Lokacija: forum
|
|
[Vrh] |
|
Masiela Forumaš(ica)


Pridružen/a: 11. 09. 2007. (22:28:01) Postovi: (338)16
Spol: 
Lokacija: Među bananama
|
|
[Vrh] |
|
felixx Forumaš(ica)

Pridružen/a: 27. 11. 2007. (15:31:43) Postovi: (61)16
Lokacija: *obrisano*
|
|
[Vrh] |
|
Luuka Forumaš(ica)


Pridružen/a: 13. 02. 2007. (20:34:54) Postovi: (925)16
Spol: 
Lokacija: Hakuna Matata
|
Postano: 13:18 sub, 9. 2. 2008 Naslov: |
|
|
Ko što je reko vsego, kasnije će to bit od pomoći...naravno da je fja kao takva nepotrebna i bezvezna, samo vas se hoće upoznat s pojmom višestrukog pointera i kak se s tim radi u funkcijama...dosta fja u prog2 i posebno u spa na 2.god vraća nekakav pointer, prima dupli pointer i slično, i samo se od vas traži da to skužite, ne da pišete takve funkcije koje su nepotrebne. Ako se varam, vsego će me zasigurno ispraviti ;)
Ko što je reko vsego, kasnije će to bit od pomoći...naravno da je fja kao takva nepotrebna i bezvezna, samo vas se hoće upoznat s pojmom višestrukog pointera i kak se s tim radi u funkcijama...dosta fja u prog2 i posebno u spa na 2.god vraća nekakav pointer, prima dupli pointer i slično, i samo se od vas traži da to skužite, ne da pišete takve funkcije koje su nepotrebne. Ako se varam, vsego će me zasigurno ispraviti
_________________ "Bolje bi prolazio na faxu da sam na drogama nego na netu" - by a friend of mine
"Poslije spavanja doma spavanje bilo di mi je najdraža stvar" - by the same guy 
|
|
[Vrh] |
|
ma Forumaš(ica)


Pridružen/a: 27. 01. 2007. (12:06:50) Postovi: (347)16
Spol: 
|
|
[Vrh] |
|
vsego Site Admin


Pridružen/a: 06. 10. 2002. (22:07:09) Postovi: (3562)16
Spol: 
Lokacija: /sbin/init
|
Postano: 13:26 sub, 9. 2. 2008 Naslov: |
|
|
[quote="Luuka"]Ako se varam, vsego će me zasigurno ispraviti ;)[/quote]
vsego te nece ispraviti, jer rijeci tvoje istinite su, gotovo kao one od Velikog Limuna... :wob:
;)
Luuka (napisa): | Ako se varam, vsego će me zasigurno ispraviti  |
vsego te nece ispraviti, jer rijeci tvoje istinite su, gotovo kao one od Velikog Limuna...
_________________ 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] |
|
|