Početak›Форуми›Linuks›Programiranje›Pointeri
- This topic has 7 odgovora, 5 glasova, and was last updated 17 years, 3 months ranije by
pedjaman.
-
AutorČlanci
-
14. juna 2006. u 9:09 pm #7483
Grim
UčesnikVec duze vreme izucavam c, ali sam do sada pointere izbegavao.Medjutim videvsi da u nekim
knjigama koje imam pisci pointere nazivaju najvaznijom stvariu c pa tako ja krenuo da ih ucim.Shvatio sam sve sem jedne stvari : pointer pokazuje na memorisku lokaciju neke promenjljive, a ja pitam , molim da mi neko objasni zasto je to toliko vazno.14. juna 2006. u 9:59 pm #45103jboban
Učesnikpointer pokazuje na memorisku lokaciju neke promenjljive, a ja pitam , molim da mi neko objasni zasto je to toliko vazno.
Sad baš za taj slučaj i ne toliko koliko za slučaj da pokazuje na niz takvih promenljivih, ili niz struktura, memorijski blok i sl. Generalno, pointer ti pruža mogućnost interpretiranja informacije onako kako želiš, tj. upotrebom cast operatora možeš je tretirati kao običan memorijski blok. Npr. niz struktura možeš inicijalizovati na 0 šetanjem pointera kroz petlju i upisom 0 na memorijske lokacije, umesto da to radiš komandama strcpy() za stringove, = za float/double i sl.
Pointere treba koristiti i kao parametre funkcija umesto prenosa po vrednosti. U C++ za ovo imaš pogodnije prenose po referenci. Itd, itd… Kad počneš da koristiš polako ćeš shvatati zašto je to dobro, ili što bi rekao čika Jova Zmaj: “Kad porasteš, kašće ti se samo…” 😉15. juna 2006. u 8:15 am #45104civan
Učesnikpovezane liste, binarna stabla…
15. juna 2006. u 12:34 pm #45105vladeck
UčesnikGrim: otprilike ti nista nisu rekli. Pointeri su bitni iz jednog razloga: pokazuju na neki podatak. U svakom trenutku imas kontrolu nad svojim podacima (naravno, postoji i tamna strana). Kao sto je tebi bitno da znas moju adresu kako bi mi poslao pismo, tako je tebi bitno da znas gde su ti podaci u memorijskoj adresi 😉
15. juna 2006. u 4:55 pm #45106civan
UčesnikKao sto je tebi bitno da znas moju adresu kako bi mi poslao pismo, tako je tebi bitno da znas gde su ti podaci u memorijskoj adresi 😉
Sacekaj, *mi* mu nismo nista rekli!?
Ovo je isto kao da tvrdis da mu je potrebno da ZNA ip adresu od http://www.linuxo.org sajta da bi mu pristupio.
I obicne promenljive dozvoljavaju sve to sto si spomenuo ovde da je svrha pokazivaca.
A bez pokazivaca/referenci je nemoguce napraviti povezane liste, n-arna stabla i slicne rekurzivne strukture.15. juna 2006. u 9:09 pm #45107jboban
UčesnikSacekaj, *mi* mu nismo nista rekli!?
Izgleda da smo prošli neshvaćeno 😉
Inače, baš bih voleo da znam ko to zna i zašto mu je to bitno “znati gde su podaci u memorijskoj adresi”?26. juna 2006. u 7:08 am #45108civan
UčesnikInače, baš bih voleo da znam ko to zna i zašto mu je to bitno “znati gde su podaci u memorijskoj adresi”?
To je jedino korisno znati pri debugovanju segmentation fault poruka u asemblerskim programima LOL
26. juna 2006. u 2:26 pm #45109pedjaman
UčesnikA sem toga, biće ti jasniji stringovi. Naprimer, zašto se deklarišu sa
[code]
char*
[/code]
tj, kao pointer na niz karaktera.
Zašto naredbom dodele ne mogu da se kopiraju stringovi, tj. ovo
[code]
str1 = str2;
[/code]
neće baš iskopirati drugi string u prvi kako izgleda na prvi pogled,i shvatićeš zašto se u radu sa stringovima i nizovima i sl, pri predavanju funkcijama predaju u stvari pointeri na njih, a ne oni. I zašto je to dobro.
Eto malog doprinosa od mene 😉
-
AutorČlanci
Мораш бити пријављен да би поставио коментар у овој теми.