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.