[ Príspevkov: 12 ] 
AutorSpráva
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 30.04.08
Prihlásený: 15.05.15
Príspevky: 884
Témy: 3 | 3
NapísalOffline : 07.07.2008 17:25 | Vyuzitie pointerov

Zdravim, mal by som na vas jednu otazku... Kvoli comu sa vyuzivaju pointery(ukazovatele)? Ja som to pochopil asi tak, ze ich pouzitim nebude program zaberat tolko miesta v pamati RAM, teda po dealokacii sa vlastne hodnota pointera vymaze z pamati, pricom premenna by tam ostala a zaberala miesto. Aspon takto som to pochopil. Mohol by mi s tym niekto pomoct, prosim? Snazil som sa hladat cez google aj wikipediu, no k ziadnemu uspokojivemu vysledku som sa nedopracoval. Dakujem :)


Offline

Užívateľ
Užívateľ
Vyuzitie pointerov

Registrovaný: 30.05.07
Prihlásený: 29.03.14
Príspevky: 641
Témy: 46 | 46
NapísalOffline : 07.07.2008 19:31 | Vyuzitie pointerov

ak hovorime o pascale tak mas pravdu + pomocou nich sa robia v pascale dynamicke struktury ako zasobnik a fronta


Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 30.04.08
Prihlásený: 15.05.15
Príspevky: 884
Témy: 3 | 3
Napísal autor témyOffline : 07.07.2008 19:39 | Vyuzitie pointerov

Ano, ano, o pascale. No lenze je mi trochu nejasne, naco sluzia, ved namiesto nich sa mozu pouzit normalne premenne, nie? :roll: Mohol by si mi to, prosim ta trochu obozrejmit? dik


Offline

Užívateľ
Užívateľ
Vyuzitie pointerov

Registrovaný: 30.05.07
Prihlásený: 29.03.14
Príspevky: 641
Témy: 46 | 46
NapísalOffline : 07.07.2008 20:29 | Vyuzitie pointerov

v pascale existuje iba staticke pole = na zaciatku definujes velkost a ta sa neda menit, ked chces ale dynamicke pole tak musis pouzit smernik (pointer), v packale to je poriadna prplacka a povedal by som ze aj dost tazke
napriklad dynamicke pole (tiez sa to vola linked list) sa da vytvorit takto:
Kód:
type p = ^bunka;
        bunka = record
              value : integer;
              next : p
              end;
var first, last, current : p;


takze 'p' je ukazatel na 'bunka', bunka je zaznam - ma svoju hodnotu, napr integer, a ma svoj ukzatel na dalsiu bunku (p)
Potom sa s tym pracuje pomocou premennych first, last, current typu p. Ak chces tak napis a napisem aj priklad pouzitia, ze ako sa to robi v programe potom.


Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 30.04.08
Prihlásený: 15.05.15
Príspevky: 884
Témy: 3 | 3
Napísal autor témyOffline : 07.07.2008 20:40 | Vyuzitie pointerov

Hm, OK, ak mas cas, tak by si mohol postnut nejaku ukazku... Ale ajtak, s pascalom uz koncim a prechadzam na C, len toto mi nebolo trohu jasne...
Diki moc... :D


Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 21.05.08
Prihlásený: 04.10.09
Príspevky: 21
Témy: 0 | 0
NapísalOffline : 07.07.2008 21:09 | Vyuzitie pointerov

neutronmind píše:
Hm, OK, ak mas cas, tak by si mohol postnut nejaku ukazku... Ale ajtak, s pascalom uz koncim a prechadzam na C, len toto mi nebolo trohu jasne...
Diki moc... :D

Citácia:
Pointers are the heart and soul of a programming language C

Teda ak chceš programovať a vedieť pracovať s čímkoľvek, tak pointery musíš poznať a hlavne ich vedieť používať. Je ich treba už pri otvorení súboru, kde plníš pamäť štruktúry ukazujúceho pointeru na túto štruktúru. Tiež je nutnosť vedieť pointerovu aritmetiku. Už samotné funkcie majú majú formálne parametre pointerov, kde ukladáš či už absolutnú adresu premennej, alebo samotný pointer.


Offline

Užívateľ
Užívateľ
Vyuzitie pointerov

Registrovaný: 30.05.07
Prihlásený: 29.03.14
Príspevky: 641
Témy: 46 | 46
NapísalOffline : 07.07.2008 22:25 | Vyuzitie pointerov

teraz nemam cas pisat program, mozno behom tyzdna, tak tu je aspon priklad na frontu a zasobnik: http://www.learn-programming.za.net/pro ... arn14.html

imho pointre sa oplati vediet este tak pre C ale vo vyssich jazykoch (java napr) je to uz skoro uplne skryte pred programatorom, nas to ani v C nejako moc neucili kedze dynamicke pole sa tam da vytvorit jednoducho a fifo a lifo sme tam nerobili, tak ani neviem ci sa to nejako moc v C lisi od pascalu
Ak sa niekomu bude chciet mohol by dat kus pekneho kodu s lifo alebo fifo v C (ak nie tak pozrem na webe ak si najdem cas)


Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 08.06.08
Prihlásený: 09.07.08
Príspevky: 39
Témy: 1 | 1
NapísalOffline : 08.07.2008 1:53 | Vyuzitie pointerov

nerobim sice s packalom iba s C-ckom ale tam by mali pointery fungovat rovnako. co sa tyka pouzitia. predstav si ze mas pole 4 stringov. ako mozno vies string ako datovy typ v c-cku neexistuje. musis ho deklarovat polom charov. takze to uz mame 2rozmerne pole. a ked sa pozries ako to vyzera "vnutry"

deklaracia s polom ukazatelov:
Kód:
char *cislo[] = {"Jeden", "Dva", "Tri", "Stryri"};

V pamati to potom vyzera takto
cislo:
+----+
| +--|--------->| Jeden\0 |
| +--|--------->| Dva\0 |
| +--|--------->| Tri\0 |
| +--|--------->| Styri/0 |
+----+

a takto to vyzera s 2rozmernym polom
Kód:
char cislo[][15] = {"Jeden", "Dva", "Tri", "Styri"};


+-----------------------------------------------------------------------+
| Jeden\0 Dva\0 Tri\0 Styri\0 |
+-----------------------------------------------------------------------+
0 15 30 45

cize je z toho hned vidiet ze ked deklarujes 2rozmerne pole tak sa ti alokuje v pamati 45 bytov, a ked deklarujes pole ukazatelov nemusi ani jeden odkazovat na celych 15 bytov. jeden moze na 2 byte dalsi moze na 50.
a pamat musis ale alokovat vzdy. pokial mas napriklad strukturu a chces vytvorit pointer na tu strukturu mozes to urobit bud takto:
napriklad mas strukturu bod
Kód:
struct bod {
        int a;
        int b;
}

tak pointer vytovirs bud predanim adresy:
Kód:
struct bod p, *u;
u = &p;

to sa hodi hlavne ked predavas adresu pointeru ako parameter funkcie.
alebo mozes prenu manualne alokovat pamet tzv. "za behu":
Kód:
struct bod *u;
u = (struct bod *)malloc(sizeof(struct bod));

ale to uz pletiem c-cko s paskalom. ale hadam si pochopil co som sa snazil napisat ;)


_________________
XMPP(Jabber): k3tch@xmpp.sk
No money? No Credit? Eat shit!
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 25.06.08
Prihlásený: 13.10.10
Príspevky: 30
Témy: 10 | 10
NapísalOffline : 08.07.2008 14:02 | Vyuzitie pointerov

neutronmind píše:
Ano, ano, o pascale. No lenze je mi trochu nejasne, naco sluzia, ved namiesto nich sa mozu pouzit normalne premenne, nie? :roll: Mohol by si mi to, prosim ta trochu obozrejmit? dik


Predstav si, že máš program, ktorý zaznamenáva mená a ukladá si ich do poľa.
A máš problém: akú dĺžku dať poľu typu char, ktoré bude predstavovať meno? 20 znakov? 50? 100? A koľko môže byť mien? 100? 1 000? 6 000 000 000? (No dobre, to trochu preháňam...) Ak budeš mať namiesto poľa polí char pole ukazovateľov na char, môžeš definovať funkciu, ktorá vždy pri pridaní nového mena pridelí presne toľko pamäte, koľko meno potrebuje a vytvorí niekde v pamäti pole char, na ktoré bude ukazovať ukazovateľ z hlavného poľa (pamätá si adresu). Bude existovať len toľko polí char, koľko potrebuješ a každé bude mať len takú dĺžku, akú potrebuješ. Budeš mať síce mnoho ukazovateľov, ktoré nebudú ukazovať nikam, ale stále lepšie ako prázdne polia zaberajúce tak po 50 bajtov...

Ukazovatele sa oplatia len vtedy, keď ukazujú na štruktúru alebo reťazec, jednoducho na niečo, čo by spotrebovalo viac pamäte ako ukazovateľ (to je okolo 10 bajtov, teraz presne neviem).


_________________
"Civilizácia sa rozvíja nárastom počtu dôležitých úkonov, ktoré môžeme vykonávať bez predchádzajúcej úvahy."
Alfred North Whitehead
Offline

Užívateľ
Užívateľ
Vyuzitie pointerov

Registrovaný: 16.02.08
Prihlásený: 08.12.10
Príspevky: 235
Témy: 13 | 13
NapísalOffline : 29.07.2008 14:09 | Vyuzitie pointerov

Ide o setrenie pamate. Na to cele pointre. Aj tak jazyk ako Java, tam o poitroch ani nevies, lebo vsetko za teba robi automatika (gargabe collector). Preto je aj Java pomala, lebo automatika je pomala. Aj napriklad automaticka prevodovka, sice je pohodlna, ale nedostanes z toho maximum.

Ak vies kolko pamate ti treba, tak das staticky, je to aj rychlejsie. Ale dost casto nevies, kolko pamate ti bude treba...

Len si vsimni widnows Vista. Vobec nesetria pamatou a vidis kolko ramky to zere. A zbytocne. Optmilizacia a jednoduchost Microsfu asi nic nehovori. Vsetky ich softy z ktorymi som sa stretol, boli prehnane komplikovane... Take, tazkopadne...

Potom rozne velmi caste a velmi vhodne struktury si bez pointrov neviem predstavit. Ani nie tak pole, to ma alternativu v statickom. Ale taky strom si bez pointrov neviem ani predstavit. Stromy sa brutalne vyuzivaju a maju velmi dobre vlastnosti...

Aj ked clovek nepouziva pointre, napr. javista, ale kazdopadne je ich dobre vediet lebo na pozadi su vzdy, aj databazy... Proste kopu veci na nic stoji... Java ma super univerzalnost, ale s pamatou v Jave nehnes....

Kazdopadne myslim, ze programator by mal mat pointre v malicku. Aj zakladne stromy :)

Priznam sa, v pascale mi systax robi aj robi problemy. Nikdy si take veci neviem zapamatat. Ale v C vsetko ok, velmi sa mi paci syntax.... Ale pascal ak fakt musim pozerat ze ako sa co pise :P


Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 21.05.08
Prihlásený: 04.10.09
Príspevky: 21
Témy: 0 | 0
NapísalOffline : 29.07.2008 14:49 | Vyuzitie pointerov

ado21 píše:
Kazdopadne myslim, ze programator by mal mat pointre v malicku. Aj zakladne stromy

Len škoda, že to je tá menšia menšina.

ado21 píše:
Priznam sa, v pascale mi systax robi aj robi problemy. Nikdy si take veci neviem zapamatat. Ale v C vsetko ok, velmi sa mi paci syntax.... Ale pascal ak fakt musim pozerat ze ako sa co pise

A prečo robiť v pascale?

Inak čo ide o tie pointery, tak sa ti s tým moc ani neoplatí zaoberať, pokiaľ len prechádzaš základmi jazyka C (alebo nebodaj si nevšímaš pojmy ako heap, buffer,...). Výhodu ty môžeš vidieť pri práci s poľom (vyššie v príspevku je popísane viac).


Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 30.04.08
Prihlásený: 15.05.15
Príspevky: 884
Témy: 3 | 3
Napísal autor témyOffline : 29.07.2008 20:37 | Vyuzitie pointerov

OK, dakujem vsetkym za odpovede, uz mi je to jasnejsie. Btw. potom v tej knizke som aj mal napisane niektore informacie, ktore ste tu uz ohladom pointerov spominali... Zhodou okolnosti sa prave idem ucit o pointeroch v C... Len sa mi to spociatku zdalo nezmyselne, pouzit pointer, ved som mohol pouzit normalnu premennu... A vtedy som uz bol nazhaveny na C, takze som polovicu knihu o Pascale preskocil :D Nastastie sa tykala iba prace so subormi, ale to uz viem robit v Cecku... Tak este raz vsetkym dakujem za prispevky :nod: :)


 [ Príspevkov: 12 ] 


Vyuzitie pointerov



Podobné témy

 Témy  Odpovede  Zobrazenia  Posledný príspevok 
V tomto fóre nie sú ďalšie neprečítané témy.

Vyuzitie RAM

v Notebooky a netbooky

2

477

13.06.2012 23:13

Zsolti

V tomto fóre nie sú ďalšie neprečítané témy.

Využitie i7

v Procesory

4

341

26.01.2013 11:20

Echo

V tomto fóre nie sú ďalšie neprečítané témy.

Využitie joysticku

v Externé zariadenia

2

361

23.02.2012 15:12

Trivi

V tomto fóre nie sú ďalšie neprečítané témy.

Vyuzitie nadbytkov...

v Modifikácie, návody a projekty

9

1827

06.03.2007 19:51

maugggly

V tomto fóre nie sú ďalšie neprečítané témy.

Vyuzitie RAMdisku

v Operačné systémy Microsoft

5

818

21.02.2010 18:45

armin.owen

V tomto fóre nie sú ďalšie neprečítané témy.

Vyuzitie ram

v Pamäte

2

437

22.02.2016 8:01

shiro

V tomto fóre nie sú ďalšie neprečítané témy.

Využitie ram

v Pamäte

22

1505

08.10.2015 12:39

DodoSKv

V tomto fóre nie sú ďalšie neprečítané témy.

využitie pamäte

v Antivíry a antispywary

9

478

05.09.2015 20:41

tairikuokami

V tomto fóre nie sú ďalšie neprečítané témy.

Vyuzitie CPU

v AMD - Advanced Micro Devices

8

1084

14.03.2007 21:15

Baracuda

V tomto fóre nie sú ďalšie neprečítané témy.

Využitie GPS

v Smartfóny a tablety

3

441

13.01.2012 17:42

KatjushaMan

V tomto fóre nie sú ďalšie neprečítané témy.

Využitie procesora

v AMD - Advanced Micro Devices

18

1365

20.11.2011 12:56

magic

V tomto fóre nie sú ďalšie neprečítané témy.

vyuzitie siete

v Siete

8

588

14.11.2009 16:37

Mindfreak

V tomto fóre nie sú ďalšie neprečítané témy.

Využitie procesora

v Intel - Integrated Electronics

18

3367

14.04.2012 17:26

broseph

V tomto fóre nie sú ďalšie neprečítané témy.

Cpu vyuzitie

v Intel - Integrated Electronics

2

329

25.09.2012 7:37

EndersoN

V tomto fóre nie sú ďalšie neprečítané témy.

Využitie cpu

v Intel - Integrated Electronics

7

404

08.09.2012 16:37

marxxxcel

V tomto fóre nie sú ďalšie neprečítané témy.

Využitie DLNA

v Siete

1

620

26.06.2011 13:52

shiro



© 2005 - 2024 PCforum, edited by JanoF