Prosím mohl by mi někdo vysvětlit, proč používat ukazatele nebo odkazy? Nějak nechápu k čemu jsou dobré
Fórum › C / C++
Ukazatele
Jiste jednoho dne narazis na problem, kdy budes potrebovat vratit z funkce vice jak jednu hodnotu, nebo zjistis, ze parametry se predavaji hodnotou, coz vytvari jejich lokalni kopie, coz jednak neni idealni pro pamet, a navic kdyz potrebujes aby se zmena projevila na predavane hodnote, budes potrebovat ukazatel, nebo pri alokaci vetsiho objektu v pameti je vhodne ho umistit do volneho uloziste, k cemuz musis pouzit ukazatel.Ukazatel je v podstate bezpecnejsi obdoba globalni promenne,ale ne tak doslova.Odkaz je neco podobneho, ale nemuzes menit hodnotu, je to pouze odkaz na existujici promennou.obecne se snadneji pouzivaji, ale maji toto omezeni.
Ze za??tku jsou ukazatele a reference opravdu slo?it? a bude? se s nima pr?t. Pak ale zjist?? ?e by ti chyb?ly...
Ale vzato u? od z?kladu - vem si t?eba pole deseti hodnot. M?? pole - t?eba MOJE_POLE[10], je? m? defakto 10 r?zn?ch prom?nn?ch. jazyk vnit?n? pracuje s poli pomoc? ukazatel?, kdyby ne, tak by si musel pracovat s ka?d?m prvkem zvl?. Neexistovalo by t?eba MOJE_POLE[x] (kdy x je u?ivatelem zadan? prom?nn?), proto?e se nejedn? o n?zev prom?nn?, tak?e bys musel porovnat ??slo zadan? u?ivatelem s ??slem kter? bys jako konstantu p?i?adil ka?d? prom?nn?. Vem jsi, kdyby jsi m?l na??st t?eba soubor s 10000 znaky do pole, to by jsi musel definovat 10000 konstant...
Kdy? u? jsme u toho pole s 10000 znaky, v?? jak dlouho by trvalo p?i?adit ho funkci, kdyby m?l program cel? pole zkop?rovat, a co takhle kdyby jsi t?ch fc? volal t?eba 10? Proto se funkc?m p?ed?vaj? ukazatele a reference.
Ale ono i takov? alokace pole. Co kdy? nev?? kolik pam?ti pot?ebuje?, kdy? na??t?? textov? soubor? Kolik pou?ije? pam?ti? 10, to je m?lo, 100 a 1000 asi taky, tak 10000? Ale co kdy? to bude m?t t?eba 12000 znak?? Spot?ebuje? rad?ji pole pro 100000 typ? char? jeden prvek char m? 1 bajt * 100 000 = 100MB, to u? je trochu hodn? na jednor?zov? pou?it?, zvl??t? kdy? spot?ebuje? jen prvn?ch 5 bajt? na 1 slovo... pro spr?vu dynamick? pam?ti taky alespo? v jazyce C++ pot?ebuje? ukazatele.
(V C# pokud v?m ukazatele v u?ivatelsk?m prost?ed? nejsou, zbyly jen reference, ale jak to ?e?? s dyn. pam?t? nev?m)
Douf?m ?e te? u? trochu ch?pe?....
Jinak ukazatele a schéma objektově orientovaného programování jsou dvě věci, které plně pochopíš, až ve chvíli kdy si je "osaháš" (bude se ti to stávat častěji, ale tyto dva body jsou hlavní.
Přidej příspěvek
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku
×Vložení zdrojáku
×Vložení obrázku
×Vložení videa
Uživatelé prohlížející si toto vlákno
Moderátoři diskuze