NOVINKA - Online rekvalifikační kurz Python programátor. Oblíbená a studenty ověřená rekvalifikace - nyní i online.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - 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
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)

 
Odpovědět
29.8.2019 20:32
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
29.8.2019 21:01
"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

 
Odpovědět
29.8.2019 22:07
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
29.8.2019 22:35
"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

 
Odpovědět
29.8.2019 22:49
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.

 
Odpovědět
23.2.2020 6:06
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
10.10.2020 16:36
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
10.10.2020 16:43
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.

 
Odpovědět
11.1.2021 17:42
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
11.1.2021 18:33
"I ta nejlepší poučka postrádá na významu, není-li patřičně předána." - DarkCoder
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.