Zarábaj až 6 000 € mesačne! Akreditované rekvalifikačné kurzy od 0 €. Viac informácií.

Diskusia – 1. diel - Úvod do ukazovateľov (pointer) v jazyku C

Späť

Upozorňujeme, že diskusie pod našimi online kurzami sú nemoderované a primárne slúžia na získavanie spätnej väzby pre budúce vylepšenie kurzov. Pre študentov našich rekvalifikačných kurzov ponúkame možnosť priameho kontaktu s lektormi a študijným referentom pre osobné konzultácie a podporu v rámci ich štúdia. Toto je exkluzívna služba, ktorá zaisťuje kvalitnú a cielenú pomoc v prípade akýchkoľvek otázok alebo projektov.

Komentáre
Avatar
ostrozan
Tvůrce
Avatar
Odpovedá na pangas
ostrozan:10.3.2016 15:45
char abcd[26][26];

je sám o sobě ukazatel - a ty chceš ukazatel na ukazatel?

 
Odpovedať
10.3.2016 15:45
Avatar
B42P6
Člen
Avatar
Odpovedá na pangas
B42P6:10.3.2016 15:47

Ahoj, chyba musí byť niekde inde. Čo máš na riadku kde sa vyskytla chyba?

Odpovedať
10.3.2016 15:47
'long long long' is too long for GCC
Avatar
B42P6
Člen
Avatar
Odpovedá na ostrozan
B42P6:10.3.2016 16:45

Nemyslel si

char *pole[5];
(pole pointer-ov)

?
Teraz by získaním adresy tohto poľa dostal pointer na pointer.

Získaním adresy viacrozmerného poľa by získal len samotnú adresu poľa, pretože viacrozmerné pole je v pamäti uložené rovnako ako jednorozmerné.

Editované 10.3.2016 16:45
Odpovedať
10.3.2016 16:45
'long long long' is too long for GCC
Avatar
pangas
Člen
Avatar
pangas:10.3.2016 17:02

Děkuji, už jsem problém vyřešil. :) Potřeboval jsem vlastně do funkce předat dvourozměrné pole a protože jsem si neuvědomil, že už to vlastně ukazatel je, tak jsem si myslel, že potřebuji jako parametr předat ukazatel na to pole, aby jsem po skončení funkce neměl zase prázdné pole.. Moje chyba, děkuji za odpovědi :-)

 
Odpovedať
10.3.2016 17:02
Avatar
Tomáš Svoboda:20.4.2016 18:05

Zdarec, nedochází mi to.
Chápu co pointery dělají, chápu jakým způsobem asi fungují, nechápu ale jak je využít. Pro dynamické alokování to bude asi esenciální ale mě to nedochází.

Plácnu, když bych je nepoužíval bude alokovaná paměť pro můj daný program při běhu neustále růst.. ? Zavolat proměnou odkudkoliv mohu přeci i tak přimo jejím názvem.

Díky :) [ Tom, the "rozmazlen pythonem"]

Odpovedať
20.4.2016 18:05
Alea iacta est.
Avatar
gusto
Člen
Avatar
Odpovedá na tomisoka
gusto:22.9.2017 15:37

Ale od kedy je int* datovy typ ? Ved datovy typ je len int. A pokial si dobre pamatam, tak tato funkcia

void prohod(int *p_a, int *p_b)
{
    int pomocna = *p_a;
    *p_a = *p_b;
    *p_b = pomocna;
}

ma definovane 2 smerniky na datovy typ int a v tele je dalsia obycajna premenna "pomocna" datoveho typu int

 
Odpovedať
22.9.2017 15:37
Avatar
Honza Skřivánek:30.1.2018 18:41

Jen bych dodal na okraj k té poznámce, že pomocná proměnná není k prohození dvou hodnot potřeba. Například pomocí bitového XORu to jde udělat takto:

int x = 15;                     // 1111
int y = 7;                      // 0111
x = x^y;                        // 1000
y = x^y;                        // 1111 zde už je v y původní hodnota x
x = x^y;                        // 0111 a zde máme v x původní y

Jde to pochopitelně provést i například pomocí sčítání a odčítání (tam ale pozor na overflow)

Editované 30.1.2018 18:42
 
Odpovedať
+1
30.1.2018 18:41
Avatar
DarkCoder
Člen
Avatar
Odpovedá na Honza Skřivánek
DarkCoder:30.1.2018 20:52

Ano, to je další způsob. Tento způsob se ale v praxi nepoužívá a to z důvodu efektivity. Většina moderních překladačů může optimalizovat dočasnou proměnnou tak, že používá stejné množství paměti a registrů jako za použití XOR. Způsob za použití dočasné proměnně je přinejmenším stejně tak rychlý a často i rychlejší.

Odpovedať
30.1.2018 20:52
"I ta nejlepší poučka postrádá na významu, není-li patřičně předána." - DarkCoder
Avatar
Odpovedá na DarkCoder
Honza Skřivánek:30.1.2018 21:10

To je fakt, je to spíš taková zajímavost, se kterou se člověk může setkat třeba u pohovoru :-) Navíc tam nastane problém pokud se obě hodnoty budou rovnat. Na druhou stranu, třeba u nějakých jednočipů to stále může mít smysl.

 
Odpovedať
30.1.2018 21:10
Avatar
DarkCoder
Člen
Avatar
Odpovedá na Honza Skřivánek
DarkCoder:30.1.2018 21:30

Přesně tak. Jeho využití je hodně specifické, zejména mikrokontroléry, tam kde paměti není nazbyt a kryptografické aplikace. Z tohoto důvodu jsou překladače optimalizované jinak..

Odpovedať
30.1.2018 21:30
"I ta nejlepší poučka postrádá na významu, není-li patřičně předána." - DarkCoder
Robíme čo je v našich silách, aby bola tunajšia diskusia čo najkvalitnejšia. Preto do nej tiež môžu prispievať len registrovaní členovia. Pre zapojenie sa do diskusie sa zaloguj. Ak ešte nemáš účet, zaregistruj sa, je to zadarmo.

Zobrazené 10 správy z 58.