Hledáš dárek, který neskončí v koši? Nyní 90 % extra kreditů ZDARMA s promo kódem PREKVAPENI90. Zjisti více:
NOVINKA: Staň se datovým analytikem od 0 Kč a získej jistotu práce, lepší plat a nové kariérní možnosti. Více informací:

Diskuze – Lekce 1 - Úvod do ukazatelů v jazyce C

Zpět

Upozorňujeme, že diskuze pod našimi online kurzy jsou nemoderované a primárně slouží k získávání zpětné vazby pro budoucí vylepšení kurzů. Pro studenty našich rekvalifikačních kurzů nabízíme možnost přímého kontaktu s lektory a studijním referentem pro osobní konzultace a podporu v rámci jejich studia. Toto je exkluzivní služba, která zajišťuje kvalitní a cílenou pomoc v případě jakýchkoli dotazů nebo projektů.

Komentáře
Nejnovější komentáře jsou na konci poslední stránky.
Avatar
Odpovídá na DarkCoder
Patrik Pastor:29.8.2019 20:32

to nechpu, XOR ma operator znaceny '^'? A proc by xorovani promennych bylo menne efektivni jako incializace pomocne promenne? (jak tvrdis, ze by byla prinejmensim stejne rychla). Jedna se tedy o efektivitu s pohledu mista v pameti nebo efektivitu vypocetnich instrukci? (pamet vs procesor)

Avatar
DarkCoder
Člen
Avatar
Odpovídá na Patrik Pastor
DarkCoder:29.8.2019 21:01

Ano, jedná se o bitový operátor XOR (nonekvivalence) a ten má skutečně označení '^'. Operátor XOR nastavuje bit na 1, když jsou oba bity navzájem různé. Je třeba rozlišovat bitové operátory od logických. Jedná se o efektivitu z hlediska počtu výpočetních instrukcí při zachování stejné velikosti potřebné paměti.

Odpovědět
"I ta nejlepší poučka postrádá na významu, není-li patřičně předána." - DarkCoder
Avatar
Odpovídá na DarkCoder
Patrik Pastor:29.8.2019 22:07

no ale stale nechapu proc by xorovani melo byt vypocetne slozitejsi. Chapu ze to je operace navic, ale prece to je skoro nic pro dnesni procesory

Avatar
DarkCoder
Člen
Avatar
Odpovídá na Patrik Pastor
DarkCoder:29.8.2019 22:35

Je to z několika důvodů: Za použití pomocné proměnné dochází k přímému kopírování, kdežto u použití XOR dochází navíc k porovnávání jednotlivých bitů. Dále u procesorů řady x86 jak i Intelu tak i u AMD dochází při pohybu mezi registry k nulové odezvě (eliminace MOV). A nakonec XOR algoritmus je závislý na výsledku předchozí operace. Moderní CPU se snaží provádět instrukce paralelně prostřednictvím tzv. instrukčních rour. A jelikož výměna obsahu proměnných za použití XOR je závislá na předchozím subvýsledku, nelze použít výhod paralelismu. To způsobuje, že výměna obsahu proměnných za použití XOR bude pomalejší nežli za použití pomocné proměnné.

Odpovědět
"I ta nejlepší poučka postrádá na významu, není-li patřičně předána." - DarkCoder
Avatar
Odpovídá na DarkCoder
Patrik Pastor:29.8.2019 22:49

predpokladam ze "(eliminace MOV)" - je prikaz pro ulozeni hodnoty na adresu? Nejsem si jisty , ale videl jsem to mam dojem v assembleru. Snad na to tady taky casem budou nejake clanky

Avatar
Michal H.
Člen
Avatar
Odpovídá na gusto
Michal H.:23.2.2020 6:06

no nevím jak v c, ale například c ++ nejde uložit adresa do ukazatele takto...

int * p_int;
p_int = 0xC7000000;

tohle udělat nelze. Snažíš se do adresy uložit číslo. Číslo musíš explicitně přetypovat aby se z něj stala vlastně adresa.

p_int = (int *) 0xC7000000;

tak že int* bude asi typ :) A ukazatele patří mezi složené typy. Řekl bych že tady rozdíl mezi c a c++ moc velký nebude.

Avatar
krepsy3
Tvůrce
Avatar
krepsy3:10.10.2020 16:36

V článku se píše:

...Proměnná typu pole totiž není nic jiného než ukazatel. To znamená, že nám bez problémů projde následující operace přiřazení:

int pole[10];
int* p_pole = cisla;

To je nějaký divný (ten kód). Zkusil jsem se nad tím zamyslet, a došlo mi - nemá na druhém řádku být 'int* p_pole = pole;'?

Odpovědět
Programátor je stroj k převodu kávy na kód.
Avatar
Odpovídá na krepsy3
Patrik Valkovič:10.10.2020 16:43

Ano má, díky za upozornění. Oprava se již schvaluje.

Odpovědět
Nikdy neumíme dost na to, abychom se nemohli něco nového naučit.
Avatar
Jozef Vendel
Člen
Avatar
Jozef Vendel:11.1.2021 17:42

Je škoda a sklamanie, že v tomto kurze nie sú praktické cvičenia k jednotlivým lekciám ako to bolo v kurze Základy C.

Avatar
DarkCoder
Člen
Avatar
Odpovídá na Jozef Vendel
DarkCoder:11.1.2021 18:33

Pokud Tě zajímají ukazatele a jejich praktické použití, což je alfou a omegou programování v C, pak není nic snazšího, než že napíšeš příspěvek do C sekce s tím, co Tě zajímá.

Odpovědět
"I ta nejlepší poučka postrádá na významu, není-li patřičně předána." - DarkCoder
Nejnovější komentáře jsou na konci poslední stránky.
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 10 zpráv z 58.