>> [MUSIC PLAYING]
>> DOUG LLOYD: OK.
Biz integers ilə çalışmış, biz simvol ilə çalışmış,
Biz üzüb gedirdi çalışdıq, ikiqat, simlər, və bools.
Biz çox bütün olduqca canı sonra [Işitilemez] növləri ki,
birlikdə bizə bütün mövcud olmuşdur.
Amma indi biz daha bir şey etmək istəyirəm.
Biz bunu necə edə bilərəm?
Necə ki, biz müxtəlif data növ yaratmaq üçün nə etməliyəm?
Biz strukturları istifadə edərək bunu edə bilərsiniz.
Belə ki, strukturlar, bizə birləşdirmək üçün imkan verir müxtəlif növ dəyişənlərin
bir yeni dəyişən növü, Hansı öz növü adını təyin edə bilərsiniz.
Bu, həqiqətən güclü şey edə olmaq
biz qrup indi bilərsiniz, çünki müxtəlif data növləri elementləri
birlikdə bir məntiqi əlaqəsi var.
Biz bunu edə olduğunuz sort Diziler ilə, sağ?
Biz qrup dəyişənlər Eyni data növü
birlikdə böyük bir hissəsində yaddaş, bir sıra.
>> Amma biz qarışdırmaq bilməmişik birlikdə müxtəlif məlumat növləri.
Biz bir tam qoşmaq, deyə bilmərəm və bir xarakter, və ikiqat bütün
eyni şey və vahid zəng.
Lakin strukturları, və ya tez-tez structs adlandırılacaq
biz, həqiqətən, bilərsiniz.
Belə bir quruluş sort deyil bir super dəyişən kimi.
Bu olan bir dəyişən var daxilində digər dəyişənlərin.
Belə ki, burada bir nümunə var çox sadə strukturu.
Bu syntax baxmaq nə bir avtomobil üçün bir quruluş yaratmaq istəyirəm.
İndi burada sintaksis ilə gedək.
Struct ki, var göstərir söz
Burada yeni data type yaradılması alıram ki.
Xüsusilə, veri növü adı var biz görəcəksiniz kimi, struct avtomobil olacaq.
Amma bu tip sort compiler off ki, bu
dəyişənlərin bir qrup kimi gedir eyni tipli bir hissəsi hesab etmək
bir dəqiqə.
>> Cars, strukturu yalnız adı.
Yenə burada data type gedir struct avtomobil, yalnız avtomobil olacaq.
Amma different-- varsa Bir neçə structs yaratmaq
Eyni proqram, siz lazımdır struct və struct ayırmaq.
Belə ki, struct avtomobil, mən də ola bilər struct tələbə, məsələn,
eyni proqramda.
Qıvrım aşırma Inside var deyilən sahələrdə bütün,
və ya struktur üzvləri.
Belə ki, bəzi şeyləri nə Bir avtomobil xas olan?
Bəli, adətən, bir il malikdir bir model adı və bir plaka,
adətən olan bir odometer bu mil bir sayı,
və bəlkə bir mühərrik ölçüsü.
Gördüyünüz kimi, mən qədər qarışdırmaqla alıram integers və simvol və ikiqat.
Onlar bütün olacaq Bu yeni data növü hissəsidir.
>> Nəhayət, son şey etmək lazımdır, Bu kiçik nöqtəli vergül unutmayın
Sonda.
Biz strukturu müəyyən bitirmək sonra, Biz sonunda nöqtəli vergül qoymaq lazımdır.
Bu, çox ümumi sintaktik var səhv, bir funksiyası ilə, çünki,
misal üçün, yalnız olardı açıq buruq brace, yaxın buruq brace.
Siz bir nöqtəli vergül qoymaq deyil bir funksiyası müəyyən sonu.
Bu funksiya kimi görünür müəyyən, lakin bu deyil,
və belə nöqtəli vergül var yalnız bir öyüd-nəsihətdir ki,
çünki orada qoymaq lazımdır compiler başqa olacaq
onunla nə bilirik.
Bu, çox ümumi səhv var təsadüfən etmək
zaman ilk strukturları müəyyən edirik.
>> OLDU.
Belə ki, biz adətən bizim strukturları müəyyən Bizim proqramları çox üst
onlar yəqin ki, olacaq, çünki çox funksiyaları ilə istifadə ediləcək.
Biz müəyyən etmək istəmirəm bir funksiyası daxilində struct,
sonra biz only-- bilər, çünki strukturu çərçivəsində həqiqətən
yalnız bu funksiyası daxilində mövcuddur.
Biz yəqin ki, bir strukturu müəyyən etmək istəyirəm belə ki, biz çox funksiyaları istifadə edə bilərsiniz,
və ya bəlkə birdən çox da birlikdə bağlayır faylları
Bizim tək proqram yaratmaq.
Bəzən də yerinə strukturu müəyyən
qoymaq çox üst , funt daxildir və sizin funt müəyyən
Məsələn, siz onları qoymaq bilər ayrı-ayrı dot h faylları, onda hansı sizə
funt özünüzü daxildir.
>> Beləliklə, biz strukturları var, amma indi biz onların içərisində almaq lazımdır.
Necə ki, biz daxilində alıram daxil olmaq üçün bir quruluş
bu sub-dəyişənlər, o dəyişənlər ki, struktur daxilində var?
Yaxşı, biz deyilən bir şey var imkan verir dot operator,
strukturunun sahələri daxil olmaq üçün.
Belə ki, məsələn, mən bəyan etdik deyək Mənim strukturu data yerdə yazın
mənim proqram üst, və ya bəlkə da Mən funt var bir dot h fayl daxildir.
Mən sonra yeni yaratmaq istəyirsinizsə ki, data növü dəyişən, mən demək olar
struct avtomobil, mənim avtomobil, nöqtəli vergül.
Mən int demək olar kimi x, və ya simli adı nöqtəli vergül.
>> Burada data type, struct avtomobil dəyişən adı, mənim avtomobil
və sonra mən dot operator istifadə edə bilərsiniz mənim avtomobil müxtəlif sahələri daxil.
Beləliklə, mən avtomobil demək olar dot 2011-ci il bərabərdir.
Ki, mükəmməl gözəl var.
Siz geri əgər il, bir kimi müəyyən edilmişdir bu struct avtomobilin daxili Tamsayı
data növü.
Struct avtomobil məlumatların hər hansı bir dəyişən növü, belə mənim avtomobil kimi, mən avtomobil demək olar
dot il bərabərdir və sonra təyin bəzi tam dəyəri, 2011.
Mənim avtomobil dot nömrəli CS50 bərabərdir.
Mənim kart dot odometer 50505 nöqtəli vergül bərabərdir.
O bütün var mükəmməl gözəl və var
biz daxil necə strukturunun sahələri.
Structures, baxmayaraq ki, ehtiyac yoxdur yığını yaradılacaq.
Sadəcə biz, hər hansı digər dəyişən kimi dinamik onları ayıra bilər.
Biz bir proqram varsa ki, bilər çox strukturları yaradan,
biz necə çox bilmirəm biz lazım olacaq
sonra biz dinamik lazımdır bu strukturların ayrılması
Bizim proqram kimi çalışır.
Və biz daxil olacaq, belə ki bu kontekstdə bir quruluşun sahələri,
biz ilk dereference lazımdır geri strukturu pointer,
Və sonra biz bir dereference pointer, sonra biz sahələri əldə edə bilərsiniz.
Biz yalnız bir varsa strukturu göstərici,
biz yalnız pointer dot sahəsində deyə bilmərəm ad və biz aradığınız nə almaq.
Dereferencing əlavə addım var.
Belə ki, deyək əvəzinə previous-- of
yalnız əvvəlki misal kimi, əvəzinə elan
yığını, struct avtomobil, mənim avtomobil, nöqtəli vergül, mən struct avtomobil demək
star, bir bir göstərici struct avtomobil, mənim avtomobil çağırıb
struct avtomobil malloc ölçüsü bərabərdir.
Biz neçə-neçə ölçüsü anlamaq lazımdır Yeni data type tutur bayt.
Siz mütləq yalnız istifadə etmək lazım deyil eni, int və ya char və ya hər hansı ölçüsü
daxili data növləri.
compiler kifayət qədər ağıllı deyil neçə bayt anlamaq üçün
yeni strukturu tələb olunur.
Beləliklə, mən özümü yaddaş vahidi malloc bir struct avtomobil keçirilməsi üçün kifayət qədər böyük,
və mən geri bir göstərici almaq yaddaş ki, blok,
ki, pointer mənim avtomobil verilir.
>> İndi daxil olmaq istəyirsinizsə, mənim avtomobil sahələri,
Mən ilk mənim avtomobil dereference istifadə dereference operator, ulduz
biz göstəricilərinə gördüm ki, video, və sonra mən dereference sonra,
sonra mən dot operator istifadə edə bilərsiniz mənim avtomobil müxtəlif sahələri daxil.
2011-ci ilin bərabərdir dot mənim avtomobil Star.
Bu təsir biz bu halda istəyirəm,
biz dinamik var, çünki mənim avtomobil ayırıb.
>> Bu doğru olsa da, cür annoying var?
İndi 2-addım prosesi var.
İndi biz dereference-- var biz bir ulduz operator,
və biz bir dot operator var.
Və gözləmək bilər, çünki C proqramçılar qısa yolları sevgi
şeyə, bir var qısa yol bunu.
Arrow adlı bir operator var, olan bu proses çox asan edir.
arrow işləri yoldur ilk dereferences
sol pointer operator yan,
və sonra, sonra dereferenced edərək sol pointer,
Bu sağ sahəsində çatmaz.
Və belə ki, əvvəllər biz bu cür idi mənim avtomobil, bütün bu məhsulları dot star
kimi orada gedən bir çox var idi.
Amma nə biz əvəzinə nə edə şeylərdir deyil Mənim avtomobil arrow 2011-ci il bərabərdir.
>> Yenə burada nələr olur?
Birincisi, mən mənim avtomobil dereferencing alıram.
Hansı yenə burada bir göstəricisidir.
Sonra sonra Mən avtomobil dereferenced
sonra sahələri əldə edə bilərsiniz il, boşqab, və odometer
yalnız mən biləcəyi kimi ilk olan əvvəl mənim avtomobil dereference üçün istifadə ulduz,
və sahədən daxil olmaq üçün nöqtə.
Belə ki, siz, strukturları ola bilər strukturlarına göstəricilərinə ola bilər,
və daxil olmaq üçün yolları var həmin strukturların sahələri,
Siz göstəricilərinə var olub Onlara və ya dəyişənlər özləri.
Dot və ya arrow, asılı olaraq dəyişən necə elan edildi.
Mən Doug Lloyd deyiləm, bu CS50 edir.