>> HOPARLÖR 1: bir proqram yazmaq edək ki, Bu adlar üçün istifadəçi və baxın
üç tələbə evləri.
İndi, bu adları və ev saxlamaq üçün biz, nə, altı dəyişənlər istifadə edə bilər.
Üç adları üçün strings və digər evlər üçün üç strings,
lakin biz artıq biz təmizləmək bilər ki, bilirik əvəzinə seriallarda istifadə edərək, kodu,
Məsələn üçün ölçüsü 3 bir sıra üç adları, və bir array
evlərə ölçüsü 3.
Amma biz bu təmiz olar çıxır daha da, və həqiqətən o saxlamaq
birlikdə adları və evlər, belə ki, tələbə adı və onun ev
elə belə, doğurmaktadırlar Eyni dəyişən, danışmaq.
>> Bunu etmək üçün, baxmayaraq ki, biz bəyan etmək lazımdır öz data type, C öz növü,
C müəllifləri mütləq deyil ki, il əvvəl edirəm.
Bunu etmək üçün biz söz istifadə edə bilərsiniz typedef, ilə yanaşı,
başqa söz struct.
Bir nəzər salaq.
Structs.h Inside, Mən artıq var tərəfindən açılmış kazanılmış
CS50 kitabxana, o cümlədən.
Mən növbəti, typedef struct yazın gedirəm və sonra bir buruq brace.
Struct Inside, Mən gedirəm tələbə vardır ki, müəyyən bir
adını string, bir string ev çağırıb.
Mən sonra mənim qıvrım aşırma yaxın gedirəm, və belirttiğiniz adı
Bu yeni data type tələbə olmalıdır.
Başqa sözlə, bu sintaksis vasitəsilə mən öz yeni data type elan
ki, bir an əvvəl mövcud etmədi və Bu data növü daxilində iki məlumatlar
sahələri və ya data üzvləri, adını bir, bir adlı ev, həm də ki,
növü simli var.
>> Indi bu növü istifadə edək faktiki proqram.
Structs0.c, mən eyni kazanılmış özüm bəzi artıq başlayıb
boilerplate kodu və mən indi deyiləm Bu data istifadə etmək olacaq
aşağıdakı kimi tələbə yazın.
Mən ilk bir bəyan gedirəm type tələbə array, I will
Bu array tələbələr zəng -
plural -
və mən onun ölçüsü olacaq belirtirsiniz dəyəri olan, bildiriş, üç,
daimi TƏLƏBƏLƏR -
bütün paytaxtlarında -
Mən burada bəyan etdik ki, əvvəllər fayl.
İndi bu üç üzərində təkrarlamaq edək tələbələr, və üçün istifadəçi təklif
onların adları və evləri.
>> i 0 almaq int, i az ki, daimi daha, i + +.
Və indi bu bədən daxilində loop, mən bir şey çap gedirəm
şagirdin adı kimi.
Mən həqiqətən almaq gedirəm ki, ifadə edərək tələbə adı
tələbələr i bracket.
Yəni mən i-ci tələbə istəyirəm indi tələbələr deyilən array, lakin
Mən i-ci tələbə almaq istəyirəm ad, və bunu, mən istifadə gedirəm
Bu. operator, bir at almaq üçün struct xüsusi sahə içərisində.
Mən tələbələr i. Adı bracket daxil GetString qaytarılması dəyəri olur ().
Eyni zamanda, mən çap gedirəm oxşar bir şey, tələbə söyləyərək
ev, indi müəyyən etmək üçün gedirəm ki, i-ci tələbələr house sahəsində
qaytarılması dəyəri verilir GetString başqa bir zəng ().
>> İndi bu üç ilə bir şey edək şagirdlərin adları və evləri,
çap kimi sadə bir şey bir cümlə, hər həyata.
int i 0, yenə i az almaq tələbələr, i + +, printf "% s% s edir.
backslash n ", indi mənə plug bildirin bu iki sahələrdə dəyərləri,
tələbələr, i. adı, vergül bracket tələbələr i bracket. evi, yaxın
paren, nöqtəli vergül.
>> Və indi bir şey etmək lazımdır.
Bu faylı alt, lazımdır ayrılıb ki, yaddaş azad
GetSring () tərəfindən pərdə arxasında olan əlbəttə üçün, malloc çağırır
strings üçün yaddaş ayrılması istifadəçi növləri.
Amma bu sadədir.
i 0 almaq int, i azdır tələbələr, i + +, və bədən daxilində
Bu loop üçün, mən sadəcə gedirəm pulsuz tələbələri bracket i. adı təmin
pulsuz tələbələri i bracket. ev.
>> İndi biz aydın loops üçün üç istifadə etdiyiniz Bu proqram, həqiqətən mən
yalnız bir istifadə, lakin bu ola bilər yalnız nümayiş xatirinə, belə ki,
biz üç fərqli daxil edə bilərsiniz biz edirik dəqiq nə addımlar.
Biz ilk bir ad və bir ev əldə etdiyiniz şagirdlərin hər biri üçün, biz sonra istəyirik
üçün adı və evi çap üç tələbənin hər birinə və
sonra biz yaddaş azad olacaq tələbələrin hər tərəfindən istifadə olunur.
Amma şübhəsiz ki, biz bu birləşdirmək etdik bilər loop üçün böyük bir daxil.
>> Tərtib, indi xilas edək, və bu proqram run.
etmək structs 0. / structs 0, tələbə ad, David təmin edək, o yaşamaq lazımdır
Mather House, tələbə adı, edək Lauren demək, o, LEVERETT yaşayır lazımdır
House, tələbə adı, Rob, o will Kirkland House yaşayır.
Və həqiqətən, David, Mather edir Lauren, LEVERETT edir
və Rob Kirkland edir.