[Prehrávanie hudby] DOUG LLOYD: OK. Pracovali sme s celými číslami, sme pracovali s charaktermi, sme pracovali plaváky, dvojlôžkové, struny, a bools. Sme vyčerpali skoro všetky z [nepočuteľný] typov, ktoré boli k dispozícii pre nás všetkých spoločne. Ale teraz chceme urobiť niečo viac. Ako to urobíme? Ako môžeme vytvoriť rôzne dátové typy? Môžeme tak urobiť pomocou štruktúr. Takže štruktúry nám umožní zjednotiť premenné rôznych typov do jedného, ​​nový typ premennej, ktoré môžeme priradiť svoj vlastný názov typu. To je naozaj silný vec je byť schopný robiť, pretože môžeme teraz skupina prvky rôznych dátových typov pri sebe, že majú logické spojenie. Boli sme schopní to urobiť s poli Druh, že jo? WE CAN premenné skupiny rovnakého typu dátového Vo veľkej jednotke pamäte, pole. Ale my sme neboli schopní miešať up rôznymi typmi dát dohromady. Nemôžeme povedať, spárovať celé číslo, a charakter, a dvojitý všetky v rovnakej veci a volanie, že jeden celok. Ale s štruktúry, alebo často označované ako structs, sme vlastne môže. Takže štruktúra je druh ako sa super premenné. Je to premenná, ktorá obsahuje ostatné premenné vnútri nej. Tak tu je príklad veľmi jednoduchú štruktúru. To je to, čo syntaxe by vyzerať chcel vytvoriť štruktúru pre auto. Teraz, poďme prejsť syntaxe tu. Struct, to je kľúčové slovo, ktoré označuje že som vytvoriť nový dátový typ sem. Najmä, názov dátového typu je Bude struct auto, ako uvidíme. Ale to je druh hrotu off na kompilátora, že tento ako skupina premenných, ktoré sa deje , Ktoré majú byť považované za súčasť rovnakého druhu za minútu. Automobily, iba názov štruktúry. Opäť platí, že dátový typ tu sa deje byť struct auto, nie len auto. Ale ak máte different-- ak vytvoríte viac structs v rovnakom programe, je potrebné rozlišovať medzi struct a Struct. Takže struct auto, mohol by som mať tiež struct študent, napríklad, v rovnakom programe. Vnútri zložených zátvoriek sú všetky takzvaných polí, alebo členovia štruktúry. Takže aké sú niektoré z vecí, ktoré sú vlastné v aute? No, to zvyčajne má rok, ktorý názov modelu, a ŠPZ, počítadlo kilometrov, ktorý má obvykle niektoré počet míľ na to, a možno veľkostí motora. A ako vidíte, som premiešaní celé čísla a znaky a dvojlôžkové. Všetci sa bude časť tohto nového dátového typu. Napokon, posledná vec, ktorú musím urobiť, nezabudnite túto malú bodkočiarka nakoniec. Potom, čo sme dokončenie definujúce štruktúru, musíme dať bodkočiarka na konci. Je to veľmi časté syntaxe chyba, pretože s funkciou, Napríklad, mali by ste jednoducho open zložená zátvorka, v jeho blízkosti je zložená zátvorka. Tie nedávajte bodkočiarka na koniec definície funkcie. To vyzerá ako funkcia definície, ale nie je to, a tak tam bodkočiarka je len pripomienkou, že vás je potrebné, aby to tam dal, pretože kompilátor inak Viete, čo s tým robiť. Je to veľmi častá chyba omylom, aby keď ste prvýkrát definovanie štruktúry. OK. Tak sme sa zvyčajne definovať naše štruktúry na samom vrchole našich programov pretože sú pravdepodobne bude , Ktoré majú byť používané vo viacerých funkciami. Nechceme, aby definovať struct vnútri funkcie, pretože potom môžeme only-- Rozsah štruktúry skutočne existuje iba vo vnútri tejto funkcie. Radi by sme pravdepodobne chcieť definovať štruktúru takže ju môžeme použiť v rôznych funkciách, alebo snáď v násobku Súbory, ktoré sú zviazané aby sme vytvorili jeden program. Niekedy tiež namiesto definovanie štruktúru na samom vrchole, kde si dať libra zahŕňa aj vaše libra definuje, Napríklad, môžete dať ich do samostatné dot h súbory, ktoré vás potom libra aj vy. Takže máme štruktúru, ale teraz musíme sa dostať dovnútra nich. Ako sa dostaneme dovnútra štruktúra pre prístup tieto čiastkové premenné, tie premenné že existujú vnútri konštrukcie? No, my máme niečo ako operátor bodka, ktorá nám umožňuje pre prístup na oblasti štruktúry. Tak napríklad, povedzme, že som vyhlásil, moja dátového typu štruktúra niekde v hornej časti môjho programu, alebo možno v bodka h súbor, ktorý som libru hotela. Ak by som potom chcete vytvoriť nový premenná tohto typu dát, môžem povedať, struct auto, moje auto, bodkočiarka. Rovnako ako by som mohol povedať, int x, alebo názov reťazca bodkočiarku. Dátový typ je tu struct auto, meno premennej je moje auto, a potom môžem použiť operátor bodky na prístup k rôznym poľa mojom aute. Takže môžem povedať svoje auto dot rok sa rovná 2011. To je úplne v poriadku. Rok, ak si spomínate, bola definovaná ako integer pole vo vnútri tohto struct autá dátový typ. Takže akákoľvek premenná dáta na struct autá typu, ako je moje auto, môžem povedať svoje auto dot rok rovná a priraďte to nejaký celočíselná hodnota 2011. Moje auto dot doska rovná CS50. Moja karta bodka stav tachometra sa rovná 50505 bodkočiarka. Všetky z nich sú úplne v poriadku a to je ako pristupovať k poľa štruktúry. Štruktúry, ale nepotrebujú byť vytvorený v zásobníku. Rovnako ako akékoľvek iné premenné, my môže dynamicky prideľovať je. Ak máme program, ktorý by mohol bude generovať mnoho stavieb, nevieme, koľko budeme potrebovať, potom musíme dynamicky alokovať tie štruktúry ako náš program beží. A tak, keď budeme pre prístup k poľa štruktúry v tejto súvislosti, Pripomeňme si, že musíme najprv dereferencia ukazovateľ na štruktúru, a potom ešte raz my dereferencia ukazovateľ, potom môžeme pristupovať poľa. Ak budeme mať len ukazovateľ na štruktúru, nemôžeme len povedať ukazovateľ dot poľa pomenovať a dostať to, čo hľadáme. Je tu ďalší krok dereferencing. Takže povedzme, že namiesto previous-- rovnako ako v predchádzajúcom príklade, namiesto toho jeho vyhlásenia na zásobníku, struct auto, my auto, bodkočiarka, hovorím struct auto, hviezda, ukazovateľ na struct auto volal moje auto, sa rovná malloc veľkosť struct vozidla. Veľkosť budeme zistiť, koľko bajtov váš nový dátový typ zaberá. Nemusíte nutne len je potrebné použiť veľkosť, šírka, int alebo char, alebo na ktorúkoľvek z vstavaných dátových typov. Kompilátor je dosť šikovný, prísť na to, koľko bajtov sú požadované vašej novej štruktúry. Tak som malloc sám jednotku pamäte dostatočne veľké, aby držať struct auto, a ja si ukazovateľ späť k tomuto bloku pamäti, a že ukazovateľ je priradený k autu. A teraz, keď chcem prístup pole môjho auta, Prvý dereferencia mojom aute som sa s použitím operátor dereferencia, hviezda že sme videli z ukazovateľov videá, a potom potom, čo som dereferencia, potom môžem použiť operátor bodky na prístup k rôznym poľa mojom aute. Hviezda môjho auta bodka rok sa rovná 2011. To by malo za následok chceme v tomto prípade, preto, že sme dynamicky pridelené moje auto. Je to trochu nepríjemné, že? Tam je proces, teraz 2-krok. Teraz musíme dereference-- máme operátor hviezdy, a máme operátora bodka. A ako sa dalo očakávať, pretože Programátori C milujú kratšie cesty robiť veci, tam je kratšie spôsob, ako to urobiť. Tam je ďalší operátor s názvom šípka, čo robí tento proces oveľa jednoduchšie. Spôsob, akým funguje, je šípka sa prvýkrát dereferences ukazovateľ na ľavej strane strana prevádzkovateľa, a potom, po dereferenced ukazovateľ na ľavej strane, pristupuje poľa na pravej strane. A tak skôr sme mali tento druh Hviezdnych moje auto dot všetky tie veci, ako by tam bolo veľa tam deje. Ale to, čo môžeme urobiť, je namiesto toho tohle-- moje auto šípka rok sa rovná 2011. Opäť platí, že to, čo sa tu deje? Po prvé, ja som dereferencing moje auto. Čo je opäť, je ukazovateľ sem. Potom, potom, čo dereferenced moje auto, ja Následne sa sprístupnia polia rok, doska, a počítadlo kilometrov rovnako ako som mohol pred tým, než prvý, Použité hviezda dereferencia mojom aute, a bodku prístup na nosidlách. Takže môžete mať štruktúru, budete môže mať ukazovatele na štruktúry, a máte spôsoby, ako prístup pole týkajúce sa týchto štruktúr, či máte odkazy na je alebo samotné premenné. Dot alebo šípky, v závislosti na ako sa premenná bola vyhlásená. Som Doug Lloyd, je to CS50.