Berre vising
0:00
S… Speaker 1 (Програм 19 10)
Utrát už je tak ambičný jako kličovícové monitor
0:04
S… Speaker 1 (Програм 19 10)
a říkali jsme,
0:06
S… Speaker 1 (Програм 19 10)
že je to ty,
0:08
S… Speaker 1 (Програм 19 10)
který má velikost podle toho,
0:11
S… Speaker 1 (Програм 19 10)
do jakého cíle ten program překládáte.
0:16
S… Speaker 1 (Програм 19 10)
V případě, že ho překládáme 200 -bitový výstupčník,
0:20
S… Speaker 2 (Програм 19 10)
tak má 4 bajty,
0:22
S… Speaker 1 (Програм 19 10)
tři 4 až 60 ditek.
0:24
S… Speaker 1 (Програм 19 10)
Už jsme si minule ukazovali,
0:26
S… Speaker 1 (Програм 19 10)
že to číslo se mění,
0:28
S… Speaker 1 (Програм 19 10)
i to místo té paměti,
0:32
S… Speaker 1 (Програм 19 10)
které ten ukazatel zabírá,
0:34
S… Speaker 1 (Програм 19 10)
se taky mění tohle toho,
0:35
S… Speaker 1 (Програм 19 10)
jak si v tom výbojovém prostředí zvolíme,
0:39
S… Speaker 1 (Програм 19 10)
jak chceme ten cíl uní,
0:43
S… Speaker 1 (Програм 19 10)
jestli vás se tímto dvě nebo přižije šeděstátky dvě.
0:47
S… Speaker 1 (Програм 19 10)
Jak ho zatýčeme do toho zdrojového
0:51
S… Speaker 1 (Програм 19 10)
odhodu, tak je následovná ten typ
0:55
S… Speaker 1 (Програм 19 10)
toho objektu,
0:56
S… Speaker 1 (Програм 19 10)
na který ten ukazatel ukazuje.
0:58
S… Speaker 1 (Програм 19 10)
Už jsme si říkali,
1:00
S… Speaker 1 (Програм 19 10)
že to tam je z toho důvodu,
1:01
S… Speaker 1 (Програм 19 10)
aby pak fungovala ta dereference.
1:04
S… Speaker 1 (Програм 19 10)
Aby když si řekneme,
1:06
S… Speaker 1 (Програм 19 10)
dej mi číslo nebo dej mi nějaký objekt,
1:10
S… Speaker 1 (Програм 19 10)
kam ten ukazatel ukazuje,
1:12
S… Speaker 1 (Програм 19 10)
tak aby...
1:15
S… Speaker 1 (Програм 19 10)
Ten počítač věděl,
1:16
S… Speaker 1 (Програм 19 10)
jak ten objekt je typu a podle toho věděl,
1:20
S… Speaker 1 (Програм 19 10)
jestli vám má přečíst jeden byte nebo čtyři byte nebo
1:25
S… Speaker 1 (Програм 19 10)
osm byte a má to interpretovat jako celé číslo nebo
1:29
S… Speaker 1 (Програм 19 10)
jako číslo s poříblivou řádovou čárkou.
1:32
S… Speaker 1 (Програм 19 10)
Takže ten typ je tam potřeba.
1:34
S… Speaker 1 (Програм 19 10)
Kdybyste ten typ neznali nebo nechtěli definovat,
1:39
S… Speaker 1 (Програм 19 10)
chtěli mít skutečně ten ukazatel jenom jako adresu,
1:43
S… Speaker 1 (Програм 19 10)
tak se tam dá do toho pěchu klíčové slovo Vojt.
1:47
S… Speaker 1 (Програм 19 10)
Vojt znamená,
1:49
S… Speaker 1 (Програм 19 10)
kdyby prázdný,
1:50
S… Speaker 1 (Програм 19 10)
to jest,
1:51
S… Speaker 1 (Програм 19 10)
že není nějak definovaný.
1:53
S… Speaker 1 (Програм 19 10)
Pak následuje hvězdička a
1:58
S… Speaker 1 (Програм 19 10)
pak následuje ten váš název,
2:00
S… Speaker 1 (Програм 19 10)
jak jste se ten ukazatel pojmenovali.
2:02
S… Speaker 1 (Програм 19 10)
Tu hvězdičku můžete přilepit jak k tomu
2:07
S… Speaker 1 (Програм 19 10)
typu, tak i k tomu názvu,
2:10
S… Speaker 1 (Програм 19 10)
který jste si vytvořili.
2:12
S… Speaker 1 (Програм 19 10)
Takže jsou v podstatě,
2:14
S… Speaker 3 (Програм 19 10)
jak kdyby,
2:15
S… Speaker 1 (Програм 19 10)
dva působy zápisu.
2:17
S… Speaker 1 (Програм 19 10)
Každý má něco.
2:19
S… Speaker 1 (Програм 19 10)
Tady tento,
2:20
S… Speaker 1 (Програм 19 10)
tady je jasné,
2:21
S… Speaker 1 (Програм 19 10)
když dáte to hvězdička k sobě,
2:23
S… Speaker 1 (Програм 19 10)
takže tím hvězdičkem je ukazatelný.
2:27
S… Speaker 1 (Програм 19 10)
Takže to hvězdičku bude ukazatelný.
2:30
S… Speaker 1 (Програм 19 10)
Tady zase u tohoto nápisu můžete vytvořit
2:35
S… Speaker 1 (Програм 19 10)
více těch objektů typu
2:39
S… Speaker 1 (Програм 19 10)
int na jednou a přičemž některé z nich budou klasické
2:43
S… Speaker 1 (Програм 19 10)
objekty typu int a některé z nich budou ukazatele na int.
2:47
S… Speaker 1 (Програм 19 10)
Takže tady můžete dát int,
2:48
S… Speaker 1 (Програм 19 10)
mezera, dvězdička,
2:50
S… Speaker 1 (Програм 19 10)
můj to tr,
2:50
S… Speaker 1 (Програм 19 10)
čárka třeba a a pak to vytvoří objekt,
2:55
S… Speaker 1 (Програм 19 10)
který bude typu int.
2:57
S… Speaker 1 (Програм 19 10)
a bude se jmenovat A a zároveň to vytvoří objekt,
3:01
S… Speaker 1 (Програм 19 10)
který se bude jmenovat monoprtera a bude to ukazatel na typ I.
3:05
S… Speaker 1 (Програм 19 10)
Takže tu hvěstičku prostě si dávejte
3:09
S… Speaker 1 (Програм 19 10)
kam chcete,
3:10
S… Speaker 1 (Програм 19 10)
ale jak říkám,
3:11
S… Speaker 1 (Програм 19 10)
každá ta možnost má něco.
3:15
S… Speaker 1 (Програм 19 10)
Já osobně,
3:16
S… Speaker 1 (Програм 19 10)
jestli takové doporučení,
3:18
S… Speaker 1 (Програм 19 10)
o kterém budu mluvit až na té poslední předážce,
3:22
S… Speaker 1 (Програм 19 10)
což jsou takové doporučení,
3:26
S… Speaker 1 (Програм 19 10)
které bývají třeba ve firmách,
3:28
S… Speaker 1 (Програм 19 10)
abyste tam jako programátoři písali
3:32
S… Speaker 1 (Програм 19 10)
koho, který o vás pak přečtěl jiným programátoři,
3:35
S… Speaker 1 (Програм 19 10)
takže pokud chcete dělat na nějakém projektu,
3:37
S… Speaker 1 (Програм 19 10)
kde bude dělat víc lidí,
3:39
S… Speaker 1 (Програм 19 10)
tak je dobere nějaká pravidla a vysát to nějak jednotně.
3:43
S… Speaker 1 (Програм 19 10)
tak já třeba osobně bych se přiklonil do pravidlu,
3:47
S… Speaker 1 (Програм 19 10)
že bych teda tu dvězdičku psal k tomu intu,
3:51
S… Speaker 1 (Програм 19 10)
a když bych chtěl vytvořit dvě proměné,
3:55
S… Speaker 1 (Програм 19 10)
tak nebudu psát tady int dvězdička,
3:58
S… Speaker 4 (Програм 19 10)
můj prtr,
3:58
S… Speaker 1 (Програм 19 10)
čárka A,
4:00
S… Speaker 1 (Програм 19 10)
ale napsal bych to na další řádi.
4:02
S… Speaker 1 (Програм 19 10)
Bude to přehlednější,
4:04
S… Speaker 1 (Програм 19 10)
když napíšete dvakrát doslovo int,
4:07
S… Speaker 1 (Програм 19 10)
ale bude to přehlednější.
4:08
S… Speaker 1 (Програм 19 10)
Takže jenom bych napsal int dvězdičku.
4:11
S… Speaker 1 (Програм 19 10)
nálepenou k tomu útům,
4:12
S… Speaker 1 (Програм 19 10)
no je to teda střední,
4:13
S… Speaker 1 (Програм 19 10)
a po to bych napsal út A.
4:15
S… Speaker 1 (Програм 19 10)
A pak tam není pochyt a je to jasné,
4:19
S… Speaker 1 (Програм 19 10)
že toto je u výbu ukazatela a toto je u
4:23
S… Speaker 4 (Програм 19 10)
výbu klasické.
4:24
S… Speaker 1 (Програм 19 10)
Takže tolik k té
4:28
S… Speaker 1 (Програм 19 10)
syntaxi,
4:29
S… Speaker 1 (Програм 19 10)
jak to zapisovat.
4:30
S… Speaker 1 (Програм 19 10)
A teď si připomeneme,
4:31
S… Speaker 1 (Програм 19 10)
jak je to uloženo v té paměti,
4:34
S… Speaker 1 (Програм 19 10)
jak je to organizováno.
4:36
S… Speaker 1 (Програм 19 10)
My už jsme to tady minule ukazovali.
4:40
S… Speaker 1 (Програм 19 10)
To ještě jednou zopakujeme.
4:43
S… Speaker 1 (Програм 19 10)
Tak když vytvoříte třeba tady ty lidě
4:47
S… Speaker 1 (Програм 19 10)
proměny a jeden ten ukazatel v tom vašem kohlu,
4:51
S… Speaker 1 (Програм 19 10)
tak co se stane v té paměti?
4:54
S… Speaker 1 (Програм 19 10)
Vytvoříte nějakou proměnou,
4:57
S… Speaker 1 (Програм 19 10)
nebo tady deklarujete a tady je zrovna jiný.
5:01
S… Speaker 1 (Програм 19 10)
takže deklarují a inicializují paměnou.
5:06
S… Speaker 1 (Програм 19 10)
Tak když toto oddělám,
5:07
S… Speaker 1 (Програм 19 10)
tak se mi někde v paměti vytvoří pamětový prostor
5:12
S… Speaker 2 (Програм 19 10)
takový,
5:13
S… Speaker 1 (Програм 19 10)
aby se do toho vzl typ I.
5:15
S… Speaker 1 (Програм 19 10)
Takže když napíšu jenom int a a měl bych tady středník,
5:19
S… Speaker 1 (Програм 19 10)
tak prostě někde v paměti po napsání toho příkazu nebo spíše
5:23
S… Speaker 2 (Програм 19 10)
poslušení toho programu,
5:25
S… Speaker 1 (Програм 19 10)
když se bude provádět tento příkaz,
5:29
S… Speaker 1 (Програм 19 10)
tak se někde v paměti rezervuje tady tento
5:33
S… Speaker 3 (Програм 19 10)
prostor.
5:33
S… Speaker 1 (Програм 19 10)
Ten počítač
5:38
S… Speaker 1 (Програм 19 10)
bude vědět,
5:39
S… Speaker 1 (Програм 19 10)
že
5:40
S… Speaker 1 (Програм 19 10)
Ten požadovaný typ,
5:42
S… Speaker 1 (Програм 19 10)
který tam máte a který chcete vytvořit je typu IN
5:46
S… Speaker 1 (Програм 19 10)
a oblížet typ IN za tady čtyři bajty,
5:49
S… Speaker 1 (Програм 19 10)
takže tam v paměti rezervuje čtyři bajty.
5:52
S… Speaker 1 (Програм 19 10)
Třeba jako příklad vám může zabrat tady
5:57
S… Speaker 1 (Програм 19 10)
tyto čtyři bajty o sobě idoucí.
5:59
S… Speaker 1 (Програм 19 10)
a ty si označí,
6:03
S… Speaker 1 (Програм 19 10)
že patří tomu procesu,
6:05
S… Speaker 1 (Програм 19 10)
který jste zpustili.
6:06
S… Speaker 1 (Програм 19 10)
Takže operační systém ví,
6:09
S… Speaker 1 (Програм 19 10)
že to prostě patří vám,
6:11
S… Speaker 1 (Програм 19 10)
nebude do toho nikdo jiný zasahovat.
6:15
S… Speaker 1 (Програм 19 10)
Paměťový manager,
6:16
S… Speaker 1 (Програм 19 10)
který by alokoval nějakou paměť,
6:19
S… Speaker 1 (Програм 19 10)
tak prostě má toto místo obsazené.
6:23
S… Speaker 1 (Програм 19 10)
a nikdy to nebude nikomu jinému přidělovat,
6:26
S… Speaker 1 (Програм 19 10)
prostě bude to jenom pro vás.
6:27
S… Speaker 1 (Програм 19 10)
Takže tady máte to A spojené tady s těmito
6:31
S… Speaker 1 (Програм 19 10)
čtyřmi byte.
6:32
S… Speaker 1 (Програм 19 10)
A cokoliv do toho A zapíšete,
6:36
S… Speaker 1 (Програм 19 10)
tak budete zapisovat tady do těchto čtyřet byte.
6:39
S… Speaker 1 (Програм 19 10)
Pak jsme říkali,
6:40
S… Speaker 1 (Програм 19 10)
že je tam takovéto pravidlo,
6:42
S… Speaker 1 (Програм 19 10)
že ten nejméně významný byte je jako první.
6:45
S… Speaker 1 (Програм 19 10)
To znamená,
6:46
S… Speaker 1 (Програм 19 10)
že nejméně významný byte je na té nejnižší adrese,
6:49
S… Speaker 1 (Програм 19 10)
což je ta počáteční adresa toho objektu A.
6:53
S… Speaker 1 (Програм 19 10)
Takže ta pětka je možná tady.
6:56
S… Speaker 1 (Програм 19 10)
A ty výšší,
6:57
S… Speaker 1 (Програм 19 10)
jak se decimální tvarovi,
7:02
S… Speaker 1 (Програм 19 10)
to byly statky 10 000.
7:07
S… Speaker 1 (Програм 19 10)
Takže toto jsou ty vyšší byte,
7:10
S… Speaker 1 (Програм 19 10)
tak následují.
7:11
S… Speaker 1 (Програм 19 10)
Takže tento objekt A
7:15
S… Speaker 1 (Програм 19 10)
má 4 byte,
7:16
S… Speaker 1 (Програм 19 10)
je spojen tedy tady s tím typem A.
7:21
S… Speaker 1 (Програм 19 10)
A ten typ A jako takový má samozřejmě i
7:25
S… Speaker 1 (Програм 19 10)
adresu nějakou vstupní do toho
7:29
S… Speaker 1 (Програм 19 10)
objektu.
7:31
S… Speaker 1 (Програм 19 10)
A když bychom chtěli tuto adresu získat,
7:34
S… Speaker 1 (Програм 19 10)
tak jak se ještě ukážeme,
7:36
S… Speaker 1 (Програм 19 10)
tak minule jsme to tady děli,
7:39
S… Speaker 1 (Програм 19 10)
takže to můžu prozradit,
7:41
S… Speaker 1 (Програм 19 10)
dáte před to takový ten symbol end.
7:44
S… Speaker 1 (Програм 19 10)
A když napíšete NA,
7:46
S… Speaker 1 (Програм 19 10)
tak je to výraz,
7:48
S… Speaker 1 (Програм 19 10)
který vám bude vracet adresu toho objektu A.
7:52
S… Speaker 1 (Програм 19 10)
Ta adresa toho
7:56
S… Speaker 1 (Програм 19 10)
objektu A bude vlastně ta adresa té první
8:00
S… Speaker 1 (Програм 19 10)
pamětěvé runky v tom objektu.
8:02
S… Speaker 1 (Програм 19 10)
Takže jestliž ten objekt zavírá to čtyři byte,
8:05
S… Speaker 1 (Програм 19 10)
to čtyři adresy,
8:07
S… Speaker 1 (Програм 19 10)
tak ta adresa toho objektu A je vlastně tou první
8:11
S… Speaker 1 (Програм 19 10)
adresou,
8:12
S… Speaker 1 (Програм 19 10)
tou nejnížší.
8:13
S… Speaker 1 (Програм 19 10)
Takže kdybyste napsali NA,
8:15
S… Speaker 1 (Програм 19 10)
tak vám to vrátí tady toto číslo.
8:17
S… Speaker 1 (Програм 19 10)
Toto je to pořadové číslo té homokové homoky,
8:22
S… Speaker 3 (Програм 19 10)
kde je důložen nejméně významnýma.
8:24
S… Speaker 1 (Програм 19 10)
Stejně tak,
8:26
S… Speaker 1 (Програм 19 10)
když pak vytvoříte V,
8:27
S… Speaker 1 (Програм 19 10)
tak to V se vytvoří někde vedle toho.
8:31
S… Speaker 1 (Програм 19 10)
Teď ty pravidla,
8:32
S… Speaker 1 (Програм 19 10)
jak se to skládá.
8:36
S… Speaker 1 (Програм 19 10)
Je to různé,
8:38
S… Speaker 1 (Програм 19 10)
můžou se ty objekty skládá za sebe,
8:40
S… Speaker 1 (Програм 19 10)
to znamená,
8:41
S… Speaker 1 (Програм 19 10)
bude A,
8:41
S… Speaker 1 (Програм 19 10)
pak dál paměti,
8:43
S… Speaker 1 (Програм 19 10)
bude B, nebo opačně,
8:47
S… Speaker 1 (Програм 19 10)
že máte A na nižší adresé B.
8:50
S… Speaker 1 (Програм 19 10)
a pak ještě na nejnižší debug .tr,
8:52
S… Speaker 1 (Програм 19 10)
záleží na optimalizaci,
8:54
S… Speaker 1 (Програм 19 10)
záleží, jestli to překládáte debug .release a tak dále.
8:57
S… Speaker 1 (Програм 19 10)
Když jistujeme toho debug .release,
9:00
S… Speaker 1 (Програм 19 10)
tak toho debug,
9:01
S… Speaker 1 (Програм 19 10)
tam je hlavně to,
9:04
S… Speaker 1 (Програм 19 10)
že ty objekty jsou od sebe
9:08
S… Speaker 1 (Програм 19 10)
obděleny nějakou mezerou.
9:10
S… Speaker 1 (Програм 19 10)
Takže kdybyste to překládali do debugu,
9:12
S… Speaker 1 (Програм 19 10)
to způsobněle ukazovali,
9:14
S… Speaker 1 (Програм 19 10)
tak ten objek A a B není takhle vedle sebe,
9:17
S… Speaker 3 (Програм 19 10)
ale je mezi nimi
9:19
S… Speaker 1 (Програм 19 10)
několik bytů mezera,
9:21
S… Speaker 1 (Програм 19 10)
která je standardně vyplněna obsahem CC,
9:25
S… Speaker 1 (Програм 19 10)
což odpovídá 1 .0 .1 .0
9:30
S… Speaker 1 (Програм 19 10)
takovým vzorem,
9:31
S… Speaker 1 (Програм 19 10)
takže je to snadno detekovatelné.
9:33
S… Speaker 1 (Програм 19 10)
A vy potom při tom vybakování vidíte,
9:38
S… Speaker 1 (Програм 19 10)
jestli vám obsah této buňky nepřerostl
9:43
S… Speaker 1 (Програм 19 10)
zahranice toho objektu,
9:45
S… Speaker 1 (Програм 19 10)
který je teda dál těmi čtěřmi bytů.
9:48
S… Speaker 1 (Програм 19 10)
A kdyby se vám objevilo něco před tím nebo zatím,
9:52
S… Speaker 1 (Програм 19 10)
nějaký zápis,
9:53
S… Speaker 1 (Програм 19 10)
nějaká hodnota do těch míst,
9:55
S… Speaker 1 (Програм 19 10)
kde je nasáhnout CC,
9:57
S… Speaker 1 (Програм 19 10)
tak víte,
9:58
S… Speaker 1 (Програм 19 10)
že je něco špatně v tom.
10:00
S… Speaker 1 (Програм 19 10)
na vašem programu,
10:00
S… Speaker 1 (Програм 19 10)
že to leze nějak záhranice toho objektu a
10:05
S… Speaker 1 (Програм 19 10)
že je tam nějaká potenciální chyba a to musíte odstranit.
10:08
S… Speaker 1 (Програм 19 10)
Tak proto v tom debugu se tam dávají.
10:12
S… Speaker 1 (Програм 19 10)
ty mezery mezi ty objekty,
10:15
S… Speaker 1 (Програм 19 10)
abyste to dokázali detekovat a přitom si nerozbili
10:19
S… Speaker 1 (Програм 19 10)
chování toho programu.
10:20
S… Speaker 1 (Програм 19 10)
Protože v releaseu,
10:22
S… Speaker 1 (Програм 19 10)
kdybyste zapsali před tuto adresu,
10:24
S… Speaker 1 (Програм 19 10)
tak vlastně před tu adresu toho objektu A o jeden byte,
10:28
S… Speaker 1 (Програм 19 10)
tak vlastně zapíšete do objektu B.
10:31
S… Speaker 1 (Програм 19 10)
Jinak u těch typu A,
10:33
S… Speaker 1 (Програм 19 10)
jako že jste zapsali mimo ten rozsah,
10:36
S… Speaker 1 (Програм 19 10)
to asi ne.
10:37
S… Speaker 1 (Програм 19 10)
protože ukazotelová aritmetika,
10:40
S… Speaker 1 (Програм 19 10)
se kterou budete pracovat,
10:41
S… Speaker 1 (Програм 19 10)
tak ona si to pohlídá.
10:42
S… Speaker 1 (Програм 19 10)
Problém by byl,
10:43
S… Speaker 1 (Програм 19 10)
kdybyste tam měli nějaké pole,
10:45
S… Speaker 1 (Програм 19 10)
a zapsat zahráníce pole zase už takový problém není,
10:49
S… Speaker 1 (Програм 19 10)
což si ukážeme potom ještě dnešní
10:53
S… Speaker 1 (Програм 19 10)
přednášce a o chvíli později,
10:55
S… Speaker 1 (Програм 19 10)
když si tam budeme dávat
10:59
S… Speaker 1 (Програм 19 10)
nějaké řekce.
11:01
S… Speaker 1 (Програм 19 10)
Vidíte, že musíte zapsat znak za velikost,
11:05
S… Speaker 2 (Програм 19 10)
který je volen,
11:06
S… Speaker 1 (Програм 19 10)
další není žádný problém.
11:08
S… Speaker 1 (Програм 19 10)
A prvnou tedy ty věci kolem toho
11:13
S… Speaker 1 (Програм 19 10)
výbarku a kolem těch mezér,
11:15
S… Speaker 4 (Програм 19 10)
kolem těch objektů,
11:16
S… Speaker 3 (Програм 19 10)
které jsou.
11:17
S… Speaker 1 (Програм 19 10)
Takže jsme měli objekty A,
11:19
S… Speaker 4 (Програм 19 10)
objekty B,
11:20
S… Speaker 1 (Програм 19 10)
oba typu I,
11:21
S… Speaker 2 (Програм 19 10)
takže čtyři bajty,
11:22
S… Speaker 1 (Програм 19 10)
čtyři bajty,
11:23
S… Speaker 1 (Програм 19 10)
nejméně významný bajt je ten prvník proti batické,
11:27
S… Speaker 5 (Програм 19 10)
kadiátářní.
11:28
S… Speaker 1 (Програм 19 10)
A pak vytváříme tady majitot R.
11:32
S… Speaker 1 (Програм 19 10)
V majitot R jsme říkali,
11:34
S… Speaker 1 (Програм 19 10)
že v případě 31 bytů,
11:36
S… Speaker 1 (Програм 19 10)
což je tato okázka,
11:37
S… Speaker 1 (Програм 19 10)
by to nemělo úplně velké,
11:39
S… Speaker 1 (Програм 19 10)
ale tyto čísla by nemělo velké,
11:41
S… Speaker 1 (Програм 19 10)
u 4 až 60 bytů by tady tyto čísla byly od následně velké.
11:46
S… Speaker 1 (Програм 19 10)
což jsme se zase taky minulem ukazovali,
11:48
S… Speaker 1 (Програм 19 10)
tak od těch dva třicetibitů ten typ ukazatel
11:53
S… Speaker 1 (Програм 19 10)
na i a ukazatel na cokoliv prostě je vždycky
11:57
S… Speaker 1 (Програм 19 10)
dva třicetibitový,
11:59
S… Speaker 1 (Програм 19 10)
takže je to nějaké číslo,
12:01
S… Speaker 1 (Програм 19 10)
takže zase musíme v paměti proezerzovat nějaké číslo.
12:04
S… Speaker 1 (Програм 19 10)
To,
12:07
S… Speaker 1 (Програм 19 10)
že v tom čísle na začátku jsou takhle nuly,
12:09
S… Speaker 1 (Програм 19 10)
tak to je jako...
12:12
S… Speaker 1 (Програм 19 10)
tady v té mé ukázce,
12:14
S… Speaker 1 (Програм 19 10)
ale ve skutečnosti by tam byly nějaké náhodné hodnoty,
12:18
S… Speaker 1 (Програм 19 10)
protože já jsem ten ukazatel tady nějak neinicializoval.
12:21
S… Speaker 1 (Програм 19 10)
Mám ten ukazatel bez inicializace,
12:25
S… Speaker 1 (Програм 19 10)
to znamená,
12:26
S… Speaker 1 (Програм 19 10)
ty hodnoty uvnitř toho ukazatele nejsou nějak definované.
12:30
S… Speaker 1 (Програм 19 10)
A v jazyce C,
12:31
S… Speaker 1 (Програм 19 10)
když deklarujete proměnou,
12:33
S… Speaker 1 (Програм 19 10)
tak není nějaká prvotní počáteční
12:38
S… Speaker 1 (Програм 19 10)
inicializace.
12:39
S… Speaker 1 (Програм 19 10)
V některých jazycích to je,
12:41
S… Speaker 1 (Програм 19 10)
nastaví se to na nějakou vypolupní hodnotu,
12:44
S… Speaker 1 (Програм 19 10)
takže v případě tohoto by se nastavilo asi na nulu,
12:47
S… Speaker 1 (Програм 19 10)
ale v jazyce C toto není.
12:49
S… Speaker 1 (Програм 19 10)
Má to své výhody a nevýhody.
12:51
S… Speaker 1 (Програм 19 10)
Samozřejmě nevýhody je,
12:53
S… Speaker 1 (Програм 19 10)
že na to musíte myslet a nemůžete to rovnou použít a musíte
12:57
S… Speaker 1 (Програм 19 10)
tam napřed něco dosadit.
12:59
S… Speaker 1 (Програм 19 10)
A výhody to má v tom,
13:00
S… Speaker 1 (Програм 19 10)
že máte plně v moci,
13:03
S… Speaker 1 (Програм 19 10)
co se vlastně v tom konu děje.
13:06
S… Speaker 1 (Програм 19 10)
že vy v zápětí do toho Micoterm budete ukládat,
13:09
S… Speaker 1 (Програм 19 10)
tak nemá smysl,
13:11
S… Speaker 1 (Програм 19 10)
aby předtím tam proběhla nějaká instrukce,
13:13
S… Speaker 1 (Програм 19 10)
která bude obsah toho ukazatele mazat,
13:17
S… Speaker 1 (Програм 19 10)
když ho stejně budete přepisovat.
13:19
S… Speaker 1 (Програм 19 10)
Takže tam máte kout navíc,
13:21
S… Speaker 1 (Програм 19 10)
který bude zbytečně zatěžovat procesovat.
13:24
S… Speaker 1 (Програм 19 10)
A protože ten jazyk C se dělá právě na ty
13:28
S… Speaker 1 (Програм 19 10)
časově kritické věci,
13:31
S… Speaker 1 (Програм 19 10)
tak to je důvod,
13:32
S… Speaker 1 (Програм 19 10)
proč to tam není automat.
13:35
S… Speaker 1 (Програм 19 10)
Ale tady v té mém ukázce si to představte,
13:38
S… Speaker 1 (Програм 19 10)
že tam tu nulu mám,
13:39
S… Speaker 1 (Програм 19 10)
takže to mám takhle vymulované.
13:41
S… Speaker 6 (Програм 19 10)
Ve skutečnosti,
13:41
S… Speaker 1 (Програм 19 10)
jak se podíváme,
13:43
S… Speaker 1 (Програм 19 10)
tak tam tak,
13:44
S… Speaker 1 (Програм 19 10)
kdyby to bylo vyčištené na nulu.
13:46
S… Speaker 1 (Програм 19 10)
Takže ten objekt Michael Thurl má zase čtyři
13:50
S… Speaker 1 (Програм 19 10)
baždy a je vnitř ten,
13:52
S… Speaker 1 (Програм 19 10)
kde vedle tady těch objektů.
13:55
S… Speaker 1 (Програм 19 10)
Teď budeme dělat nějaké operace.
13:58
S… Speaker 1 (Програм 19 10)
První věc,
13:58
S… Speaker 1 (Програм 19 10)
vyděláme to,
13:59
S… Speaker 1 (Програм 19 10)
že do toho mají to prv,
14:01
S… Speaker 1 (Програм 19 10)
uložíme adresu Ačka.
14:03
S… Speaker 1 (Програм 19 10)
Jak jsem tady před chvíli říkal,
14:05
S… Speaker 1 (Програм 19 10)
tak adresu Ačka získáme,
14:07
S… Speaker 1 (Програм 19 10)
že napíšeme výraz A a předtom uložíme ten symbol
14:12
S… Speaker 1 (Програм 19 10)
N.
14:12
S… Speaker 1 (Програм 19 10)
Ten symbol N je jakýsi operátor,
14:16
S… Speaker 1 (Програм 19 10)
který získává adresu z toho objektu,
14:18
S… Speaker 1 (Програм 19 10)
který zeptujeme následovat.
14:20
S… Speaker 1 (Програм 19 10)
Takže máme na pravé strany toho výrazu adresu.
14:24
S… Speaker 1 (Програм 19 10)
a ta adresa toho A,
14:26
S… Speaker 1 (Програм 19 10)
jak jsem říkal,
14:27
S… Speaker 1 (Програм 19 10)
je vlastně ta adresa nejnižší z toho
14:32
S… Speaker 1 (Програм 19 10)
bloku, takže ten blok toho objektu A jsou tyto čtyři bajty,
14:36
S… Speaker 1 (Програм 19 10)
nejnižší adresa je tady 001288,
14:40
S… Speaker 1 (Програм 19 10)
takže to je ta adresa objektu A,
14:42
S… Speaker 1 (Програм 19 10)
takže ten symbol NA nám
14:46
S… Speaker 1 (Програм 19 10)
potom v číslení zní tady tuto
14:51
S… Speaker 1 (Програм 19 10)
adresu, tuto číslenou hodnotu.
14:53
S… Speaker 1 (Програм 19 10)
A tuto hodnotu uložíme do toho ukazatele
14:58
S… Speaker 7 (Програм 19 10)
MyPT.
15:00
S… Speaker 1 (Програм 19 10)
které jsme říkali,
15:00
S… Speaker 1 (Програм 19 10)
že není nic jiného než nějaká paměťová vůnka nebo
15:05
S… Speaker 1 (Програм 19 10)
paměťový prostor,
15:07
S… Speaker 1 (Програм 19 10)
do kterého můžeme ukládat adresy,
15:09
S… Speaker 1 (Програм 19 10)
takže tam uložíme tady tuto adresu.
15:11
S… Speaker 1 (Програм 19 10)
Ta adresa se tam zase uloží,
15:13
S… Speaker 1 (Програм 19 10)
že ten nejméně významný byte bude jako první,
15:16
S… Speaker 1 (Програм 19 10)
takže ta 88 bude jako první,
15:19
S… Speaker 1 (Програм 19 10)
pak bude nasledovat ten druhý nejméně významný byte E312,
15:25
S… Speaker 1 (Програм 19 10)
ten nejvýznamnější byte.
15:29
S… Speaker 1 (Програм 19 10)
Takže takhle uložíme obsah do objektu
15:33
S… Speaker 2 (Програм 19 10)
Michael Carrera.
15:34
S… Speaker 1 (Програм 19 10)
Tento řádek prvně tu operaci,
15:37
S… Speaker 1 (Програм 19 10)
že vezme tuto adresu,
15:38
S… Speaker 1 (Програм 19 10)
kde začíná objekt A a uloží ji do obsahu
15:42
S… Speaker 1 (Програм 19 10)
toho Michael Carrera.
15:44
S… Speaker 1 (Програм 19 10)
Takže ten obsah je vždycky v těchto buňkách a ty adresy
15:48
S… Speaker 1 (Програм 19 10)
jsou tady takhle obsané.
15:56
S… Speaker 1 (Програм 19 10)
Takže to jsme měli získání adresy nějakého objektu,
15:59
S… Speaker 1 (Програм 19 10)
uložení do ukazatele.
16:00
S… Speaker 1 (Програм 19 10)
Teď máme ten ukazatel naplněný,
16:03
S… Speaker 1 (Програм 19 10)
už je tam nějaká smysluplná hodnota.
16:05
S… Speaker 1 (Програм 19 10)
A jakmile je v ukazateli smysluplná hodnota,
16:08
S… Speaker 1 (Програм 19 10)
tak můžeme použít tu operaci dereference.
16:11
S… Speaker 1 (Програм 19 10)
To jsme taky minule mluvili a ta operace dereference udělá
16:15
S… Speaker 1 (Програм 19 10)
to, že se podívá na tu adresu,
16:18
S… Speaker 1 (Програм 19 10)
kam ten ukazatel ukazuje.
16:20
S… Speaker 1 (Програм 19 10)
A na té adrese vezme ten paměťový
16:25
S… Speaker 1 (Програм 19 10)
obsah.
16:26
S… Speaker 1 (Програм 19 10)
A my sice máme jenom tu první adresu,
16:30
S… Speaker 1 (Програм 19 10)
ale protože ten ukazatel je typový,
16:33
S… Speaker 1 (Програм 19 10)
ten ukazatel ví,
16:34
S… Speaker 1 (Програм 19 10)
na jaký typ ukazuje.
16:35
S… Speaker 1 (Програм 19 10)
Tak když má jen tu jednu adresu,
16:39
S… Speaker 7 (Програм 19 10)
tak ví,
16:39
S… Speaker 1 (Програм 19 10)
kolik teda těch buňek bude následovat.
16:42
S… Speaker 1 (Програм 19 10)
Protože když je to typ in,
16:43
S… Speaker 1 (Програм 19 10)
tak ví,
16:44
S… Speaker 1 (Програм 19 10)
že budou následovat kromě té jedné adresy další tři buňky,
16:48
S… Speaker 1 (Програм 19 10)
takže dohromady čtyři.
16:49
S… Speaker 1 (Програм 19 10)
Kdyby to byl ukazatel na typ double,
16:52
S… Speaker 1 (Програм 19 10)
tak ví, že kromě té jedné adresy,
16:55
S… Speaker 1 (Програм 19 10)
kterou má v sobě,
16:56
S… Speaker 1 (Програм 19 10)
tak ještě bude dalších sedm,
16:57
S… Speaker 1 (Програм 19 10)
protože double má celkem osm buňky.
17:01
S… Speaker 1 (Програм 19 10)
Takže to je ta reference a ta potom s tím objektem
17:05
S… Speaker 1 (Програм 19 10)
pracuje,
17:06
S… Speaker 1 (Програм 19 10)
jakoby by to bylo ten type in nebo jakoby by to bylo ten
17:10
S… Speaker 1 (Програм 19 10)
type double, podle toho jak,
17:12
S… Speaker 1 (Програм 19 10)
na co tady je reference,
17:14
S… Speaker 1 (Програм 19 10)
na jak ty ty objektů tady je reference ukazuje.
17:18
S… Speaker 1 (Програм 19 10)
A s tím objektem tak můžeme pracovat jako s
17:22
S… Speaker 1 (Програм 19 10)
tím číslem celým nebo s tím číslem tablou.
17:26
S… Speaker 1 (Програм 19 10)
Takže když já tady na lepou stranu napíšu hvězdička
17:30
S… Speaker 1 (Програм 19 10)
mytoter, tak provedu teda tu dereferenci.
17:33
S… Speaker 1 (Програм 19 10)
Podívám se,
17:34
S… Speaker 1 (Програм 19 10)
co je to mytoter,
17:35
S… Speaker 1 (Програм 19 10)
to mytoter vidím,
17:37
S… Speaker 1 (Програм 19 10)
že je to adres a na
17:41
S… Speaker 1 (Програм 19 10)
té adrese se nachází tady ten objekt a
17:46
S… Speaker 1 (Програм 19 10)
Protože ten objekt Michael Terrell byl definován jako
17:50
S… Speaker 1 (Програм 19 10)
int hvězdička,
17:52
S… Speaker 1 (Програм 19 10)
takže ukazotelná ty int.
17:53
S… Speaker 1 (Програм 19 10)
Takže já vím,
17:54
S… Speaker 1 (Програм 19 10)
že od této atlesy ještě tři další buňky patří do
17:58
S… Speaker 1 (Програм 19 10)
toho objektu.
17:59
S… Speaker 1 (Програм 19 10)
Takže to hvězdička Michael Terrell potom mi představuje obsah
18:03
S… Speaker 1 (Програм 19 10)
tady těchto čtyřbuně.
18:05
S… Speaker 1 (Програм 19 10)
A když já do toho Michael Terrell budu zapisovat,
18:08
S… Speaker 1 (Програм 19 10)
tak jako kdybych zapisoval do těchto čtyřbuně.
18:11
S… Speaker 1 (Програм 19 10)
Kdybych z toho četl,
18:12
S… Speaker 1 (Програм 19 10)
s tomu mycoterem,
18:13
S… Speaker 1 (Програм 19 10)
kdybych to mycoterem byl třeba na té pravé straně,
18:16
S… Speaker 1 (Програм 19 10)
tak si ho naopak budu číst.
18:18
S… Speaker 1 (Програм 19 10)
tak když si ho budu číst,
18:19
S… Speaker 1 (Програм 19 10)
tak budu vyčítat ten obsah právě z těchto čtyřech buněk,
18:23
S… Speaker 1 (Програм 19 10)
které začínají na této adrese,
18:25
S… Speaker 1 (Програм 19 10)
která je daná obsahem do toho ukazatele.
18:28
S… Speaker 1 (Програм 19 10)
Takže takhle funguje ta dereference.
18:31
S… Speaker 1 (Програм 19 10)
Tím, že já jsem tady dát to hvězdička micropr na levou
18:35
S… Speaker 1 (Програм 19 10)
stranu, tu dereferenci,
18:37
S… Speaker 1 (Програм 19 10)
tak říkám,
18:38
S… Speaker 1 (Програм 19 10)
že do toho v paměťovému nístě,
18:41
S… Speaker 1 (Програм 19 10)
kam ten ukazatel ukazuje 3009.
18:44
S… Speaker 1 (Програм 19 10)
A to paměťové místo jsou tady tyto čtyři byte,
18:48
S… Speaker 1 (Програм 19 10)
já tam zapisuju devítku,
18:50
S… Speaker 1 (Програм 19 10)
protože vím,
18:52
S… Speaker 1 (Програм 19 10)
že to paměťové místo je typu int,
18:55
S… Speaker 1 (Програм 19 10)
takže to pravidlo je takové,
18:56
S… Speaker 1 (Програм 19 10)
že ten nejméně významný byte se zapíše jako první a ty více
19:00
S… Speaker 3 (Програм 19 10)
významné budou 0,
19:01
S… Speaker 1 (Програм 19 10)
takže se zapíše tady jako 0 ,9 do
19:06
S… Speaker 1 (Програм 19 10)
této paměťové pořití a do těch následujících budeme.
19:10
S… Speaker 1 (Програм 19 10)
Ona tam měla jako předtím byla,
19:11
S… Speaker 1 (Програм 19 10)
tak tam zásledně zůstane,
19:13
S… Speaker 1 (Програм 19 10)
ale věděl tam ty budy,
19:14
S… Speaker 1 (Програм 19 10)
tak kdyby se předvíče,
19:15
S… Speaker 1 (Програм 19 10)
nebo kdyby tady měla nějaké větší číslo,
19:18
S… Speaker 1 (Програм 19 10)
tak se tady ho předvíšel i rovnou odpovídající tomu.
19:21
S… Speaker 1 (Програм 19 10)
Já tomu nějaký dotaz.
19:26
S… Speaker 1 (Програм 19 10)
Já to ještě tady ukážu
19:30
S… Speaker 1 (Програм 19 10)
v tom vývojového prostředí,
19:32
S… Speaker 1 (Програм 19 10)
takže to, co jsme si tady dělali,
19:36
S… Speaker 1 (Програм 19 10)
tak já zkusím dát
19:43
S… Speaker 1 (Програм 19 10)
do toho vývojového prostředí a tam se na to podíváme.
19:47
S… Speaker 1 (Програм 19 10)
Podíváme se i na to,
19:49
S… Speaker 1 (Програм 19 10)
jak se teda liší ta typa která je výstvání.
19:52
S… Speaker 1 (Програм 19 10)
Podíváme se,
19:54
S… Speaker 1 (Програм 19 10)
jak se liší 32 ,5 -64.
20:00
S… Speaker 1 (Програм 19 10)
Takže jak vždycky vytvořím nový projekt,
20:03
S… Speaker 1 (Програм 19 10)
bude to konzolová aplikace,
20:06
S… Speaker 1 (Програм 19 10)
takže tady vytvořím ten konzoli,
20:11
S… Speaker 1 (Програм 19 10)
tady vybírám ten CMake a mám
20:15
S… Speaker 1 (Програм 19 10)
tady plus 06
20:20
S… Speaker 1 (Програм 19 10)
a počkám teda,
20:24
S… Speaker 1 (Програм 19 10)
až se mi to vytvoří kompletně ten projekt,
20:28
S… Speaker 1 (Програм 19 10)
až tam bude generování toho
20:32
S… Speaker 1 (Програм 19 10)
CMake.
20:33
S… Speaker 1 (Програм 19 10)
a pak tam ten port.
20:36
S… Speaker 1 (Програм 19 10)
Musíte dát tady napístat ten
20:41
S… Speaker 1 (Програм 19 10)
kus,
20:42
S… Speaker 1 (Програм 19 10)
který mám tady.
20:44
S… Speaker 1 (Програм 19 10)
Ještě
21:14
S… Speaker 1 (Програм 19 10)
tam dáme ten přátek unicializaci.
21:26
S… Speaker 1 (Програм 19 10)
Děláme
21:42
S… Speaker 1 (Програм 19 10)
teda verzi 60 -32.
21:47
S… Speaker 1 (Програм 19 10)
Děláme třeba tady tu výbak verzi
21:51
S… Speaker 1 (Програм 19 10)
a dáme
21:56
S… Speaker 1 (Програм 19 10)
si tady někde těchto míst při nás.
22:01
S… Speaker 1 (Програм 19 10)
kde už budeme mít v paměti vytvořené tady tyto tři
22:05
S… Speaker 1 (Програм 19 10)
objekty.
22:07
S… Speaker 1 (Програм 19 10)
A když to pustíme,
22:11
S… Speaker 7 (Програм 19 10)
tak mám
22:16
S… Speaker 1 (Програм 19 10)
tady v tom debugu tu paměť
22:20
S… Speaker 1 (Програм 19 10)
memory 1 od minulého týdne.
22:22
S… Speaker 1 (Програм 19 10)
Kdybych ji tady neměl,
22:24
S… Speaker 1 (Програм 19 10)
jej takhle zavřu,
22:25
S… Speaker 1 (Програм 19 10)
tak jak se k ní zase dostanete,
22:27
S… Speaker 1 (Програм 19 10)
vyjednoduše vyberete tady v tom debug.
22:32
S… Speaker 1 (Програм 19 10)
Windows a taky někde najdete memory.
22:36
S… Speaker 1 (Програм 19 10)
Tady můžete mít celkem čtyři pohledy
22:40
S… Speaker 1 (Програм 19 10)
nezávislé.
22:41
S… Speaker 1 (Програм 19 10)
V každém si můžete dívat na nějaký jiný písek té paměti,
22:45
S… Speaker 1 (Програм 19 10)
ale mně stačí jedna.
22:48
S… Speaker 1 (Програм 19 10)
Ta adresa,
22:49
S… Speaker 1 (Програм 19 10)
kde tu paměť budu nahlížet,
22:53
S… Speaker 1 (Програм 19 10)
tak si dám někde kolem toho A,
22:56
S… Speaker 1 (Програм 19 10)
B nebo tak,
22:58
S… Speaker 1 (Програм 19 10)
takže když chci adresu,
22:59
S… Speaker 1 (Програм 19 10)
kde je umístěno toho A,
23:00
S… Speaker 1 (Програм 19 10)
tak využiju toho symbolu a
23:04
S… Speaker 1 (Програм 19 10)
napíšu ten symbol NA,
23:07
S… Speaker 1 (Програм 19 10)
což mi vrací tu adresu toho A.
23:11
S… Speaker 1 (Програм 19 10)
Takže tady někde je to A,
23:13
S… Speaker 1 (Програм 19 10)
já ho tady vidím,
23:15
S… Speaker 1 (Програм 19 10)
takže toto je teda...
23:17
S… Speaker 1 (Програм 19 10)
Ta bunka s tím Ačkem.
23:18
S… Speaker 1 (Програм 19 10)
Kolem toho Ačka z jedné strany je tady to CCC,

Denne transkripsjonen er laga av AI (automatisk talegjenkjenning). Kan innehalda feil – sjekk mot originallyden for kritisk bruk. AI-regel

Elskar du STT.ai? Fortel det til vennene dine!
Samandrag
Trykk på Oppsummer for å laga eit AI- samandrag av denne transkripsjonen.
Samanfattar & # 160; …
Spør AI om denne transkripsjonen
Spør noko om denne transkripsjonen — AI vil finne relevante delar og svare.