1 00:00:00,000 --> 00:00:02,395 >> [موسیقی] 2 00:00:02,395 --> 00:00:05,750 3 00:00:05,750 --> 00:00:06,506 >> داگ لوید: OK. 4 00:00:06,506 --> 00:00:08,880 ما با اعداد صحیح کار کرده ام، ما با شخصیت های کار کرده ام، 5 00:00:08,880 --> 00:00:11,930 ما شناور کار کرده ام، دو برابر، رشته ها، و bools. 6 00:00:11,930 --> 00:00:14,870 ما تقریبا همه خسته ام از [نامفهوم] انواع که 7 00:00:14,870 --> 00:00:17,100 همراه در دسترس همه ما بوده است. 8 00:00:17,100 --> 00:00:19,430 اما در حال حاضر ما می خواهیم به انجام چیزی بیشتر. 9 00:00:19,430 --> 00:00:20,210 چگونه ما انجام این کار؟ 10 00:00:20,210 --> 00:00:22,560 چگونه انواع داده های مختلف ایجاد می کنیم؟ 11 00:00:22,560 --> 00:00:26,130 ما می توانیم این کار را با استفاده از ساختار است. 12 00:00:26,130 --> 00:00:30,180 بنابراین ساختار به ما اجازه متحد متغیرهای از انواع مختلف 13 00:00:30,180 --> 00:00:34,810 به تک، نوع متغیر جدید، که ما می توانیم نام نوع خود اختصاص دهید. 14 00:00:34,810 --> 00:00:37,570 این واقعا قوی چیزی که قادر به انجام این کار، 15 00:00:37,570 --> 00:00:40,900 چرا که ما هم اکنون می توانید گروه عناصر انواع داده های مختلف 16 00:00:40,900 --> 00:00:43,910 با هم که یک اتصال منطقی است. 17 00:00:43,910 --> 00:00:46,440 ما قادر به انجام این کار شده است با آرایه های مرتب کردن بر اساس، درست است؟ 18 00:00:46,440 --> 00:00:49,540 ما می توانید متغیرهای گروه از نوع داده های مشابه 19 00:00:49,540 --> 00:00:53,410 با هم در یک واحد بزرگ حافظه، یک آرایه. 20 00:00:53,410 --> 00:00:56,660 >> اما ما قادر به ترکیب شده است تا انواع مختلف داده ها با هم. 21 00:00:56,660 --> 00:01:02,610 ما نمی توانیم، می گویند، جفت یک عدد صحیح، و یک شخصیت، و دو برابر همه 22 00:01:02,610 --> 00:01:05,330 در همین و پاسخ که یک واحد. 23 00:01:05,330 --> 00:01:08,830 اما با سازه، و یا اغلب به عنوان ساختمانها اشاره شد، 24 00:01:08,830 --> 00:01:09,585 ما در واقع می توانید. 25 00:01:09,585 --> 00:01:12,370 بنابراین یک ساختار است مرتب سازی بر مانند یک متغیر فوق العاده. 26 00:01:12,370 --> 00:01:16,530 این یک متغیر که شامل است سایر متغیرهای داخل آن است. 27 00:01:16,530 --> 00:01:19,650 بنابراین در اینجا یک مثال از یک ساختار بسیار ساده است. 28 00:01:19,650 --> 00:01:23,380 این چیزی است که ترکیب این دستور نگاه می خواهم برای ایجاد یک ساختار برای ماشین. 29 00:01:23,380 --> 00:01:25,250 در حال حاضر، اجازه دهید از طریق نحو به اینجا بروید. 30 00:01:25,250 --> 00:01:27,400 ساختار، که این کلمات کلیدی که نشان می دهد 31 00:01:27,400 --> 00:01:30,270 که من ایجاد یک نوع داده جدید در اینجا. 32 00:01:30,270 --> 00:01:33,860 به طور خاص، نام نوع داده است رفتن به ماشین ساختار، همانطور که خواهیم دید. 33 00:01:33,860 --> 00:01:36,640 اما این نوع از نوک است به کامپایلر که این 34 00:01:36,640 --> 00:01:42,440 به عنوان یک گروه از متغیرها است که رفتن به بخشی از همان نوع در نظر گرفته شود 35 00:01:42,440 --> 00:01:44,010 در دقیقه. 36 00:01:44,010 --> 00:01:46,340 >> اتومبیل، فقط نام ساختار. 37 00:01:46,340 --> 00:01:50,590 باز هم، نوع داده ها در اینجا است که به ماشین ساختار، نه فقط خودرو. 38 00:01:50,590 --> 00:01:53,060 اما اگر شما different-- اگر شما ایجاد ساختمانها چند 39 00:01:53,060 --> 00:01:56,950 در همان برنامه، شما نیاز به تمایز بین ساختار و ساختار. 40 00:01:56,950 --> 00:02:00,140 خودرو پس ساختار، من هم ممکن است دانش آموز ساختار، برای مثال، 41 00:02:00,140 --> 00:02:01,790 در همان برنامه است. 42 00:02:01,790 --> 00:02:05,980 داخل آکولاد هستند تمام زمینه به اصطلاح، 43 00:02:05,980 --> 00:02:07,954 و یا اعضای از ساختار. 44 00:02:07,954 --> 00:02:10,370 پس چه برخی از چیزهایی هستند که ذاتی در یک ماشین است؟ 45 00:02:10,370 --> 00:02:15,270 خب، آن را معمولا یک سال، است یک نام مدل، و یک پلاک، 46 00:02:15,270 --> 00:02:18,000 سیستم اندازه گیری فاصله که معمولا دارای برخی از تعدادی از مایل بر روی آن، 47 00:02:18,000 --> 00:02:19,225 و شاید به اندازه موتور. 48 00:02:19,225 --> 00:02:23,570 و به عنوان شما می توانید ببینید، من مخلوط کردن اعداد صحیح و شخصیت و دو برابر. 49 00:02:23,570 --> 00:02:26,420 آنها همه در حال رفتن به بخشی از این نوع داده های جدید. 50 00:02:26,420 --> 00:02:29,750 >> در نهایت، آخرین چیزی که من باید انجام دهید، این نقطه و ویرگول کمی فراموش نکنید 51 00:02:29,750 --> 00:02:30,290 در پایان. 52 00:02:30,290 --> 00:02:34,380 پس از پایان تعریف ساختار، ما نیاز به قرار دادن یک نقطه و ویرگول در پایان. 53 00:02:34,380 --> 00:02:37,325 این نحوی بسیار معمول است اشتباه، چرا که با یک تابع، 54 00:02:37,325 --> 00:02:40,200 برای مثال، شما فقط باید آکولاد باز، آکولاد نزدیک است. 55 00:02:40,200 --> 00:02:42,950 شما یک نقطه و ویرگول در قرار داده نشده پایان تعریف یک تابع. 56 00:02:42,950 --> 00:02:46,430 این به نظر می رسد مانند یک تابع تعریف، اما این طور نیست، 57 00:02:46,430 --> 00:02:49,653 و بنابراین از نقطه ویرگول وجود دارد فقط یک یادآوری است که شما 58 00:02:49,653 --> 00:02:52,440 نیاز به آن را وجود دارد، چرا کامپایلر غیر این صورت نمی 59 00:02:52,440 --> 00:02:53,510 بدانید که چه باید با آن است. 60 00:02:53,510 --> 00:02:56,160 این یک خطای بسیار معمول است به طور تصادفی را 61 00:02:56,160 --> 00:02:58,570 وقتی که شما اول در حال تعریف سازه ها. 62 00:02:58,570 --> 00:02:59,500 >> باشه. 63 00:02:59,500 --> 00:03:02,824 بنابراین ما معمولا ساختارهای ما را تعریف در بالا بسیار از برنامه های ما 64 00:03:02,824 --> 00:03:05,490 چرا که آنها احتمالا به توابع چندگانه استفاده شود. 65 00:03:05,490 --> 00:03:08,850 ما نمی خواهیم به تعریف یک ساختار داخل یک تابع، 66 00:03:08,850 --> 00:03:12,110 چرا که پس از ما می توانیم only-- دامنه ساختار واقعا 67 00:03:12,110 --> 00:03:13,790 تنها در داخل آن تابع وجود دارد. 68 00:03:13,790 --> 00:03:17,450 ما احتمالا می خواهم می خواهم به تعریف یک ساختار بنابراین ما می توانیم آن را در توابع مختلف استفاده کنید، 69 00:03:17,450 --> 00:03:20,670 یا شاید در چند فایل هایی که به هم گره خورده 70 00:03:20,670 --> 00:03:22,920 برای ایجاد برنامه های تک ما است. 71 00:03:22,920 --> 00:03:24,920 گاهی اوقات نیز به جای از تعریف ساختار 72 00:03:24,920 --> 00:03:27,961 در بالا بسیار که در آن شما را خود پوند شامل و پوند خود را تعریف می کند، 73 00:03:27,961 --> 00:03:32,080 برای مثال، شما ممکن است آنها را در قرار فایل های نقطه ساعت جداگانه، که بعد از آن شما 74 00:03:32,080 --> 00:03:35,020 پوند شامل خودتان. 75 00:03:35,020 --> 00:03:37,620 >> بنابراین ما باید ساختارها، اما در حال حاضر ما باید در داخل آنها را دریافت کنید. 76 00:03:37,620 --> 00:03:39,800 چگونه ما در داخل گرفتن یک ساختار برای دسترسی به 77 00:03:39,800 --> 00:03:43,530 کسانی که زیر متغیرها، متغیرهای که در داخل ساختار وجود دارد؟ 78 00:03:43,530 --> 00:03:46,810 خب، ما چیزی به نام عملگر نقطه، که به ما اجازه می دهد تا 79 00:03:46,810 --> 00:03:50,990 برای دسترسی به زمینه های ساختار. 80 00:03:50,990 --> 00:03:55,490 بنابراین برای مثال، اجازه دهید بگویم من اعلام کرده ام نوع داده ساختار من در جایی 81 00:03:55,490 --> 00:03:59,020 در بالای برنامه من، یا شاید در یک فایل نقطه ساعت که من پوند را گنجانده شده است. 82 00:03:59,020 --> 00:04:03,360 اگر من پس از آن خواهید برای ایجاد یک جدید متغیر از نوع داده که، می توانم بگویم، 83 00:04:03,360 --> 00:04:06,260 ماشین ساختار، ماشین من، نقطه و ویرگول. 84 00:04:06,260 --> 00:04:11,580 درست مثل من می تواند از نوع int می گویند X، و یا نام رشته و ویرگول بدین. 85 00:04:11,580 --> 00:04:18,100 >> نوع داده ها در اینجا ماشین struct است، نام متغیر ماشین من است، 86 00:04:18,100 --> 00:04:23,770 و پس از آن می توانید از عملگر نقطه به استفاده از زمینه های مختلف از ماشین من دسترسی داشته باشید. 87 00:04:23,770 --> 00:04:27,494 بنابراین من می تواند ماشین من می گویند نقطه سال برابر 2011 88 00:04:27,494 --> 00:04:28,410 که کاملا خوب. 89 00:04:28,410 --> 00:04:34,210 سال، اگر شما به خاطر، به عنوان یک تعریف شد درست است عدد صحیح در داخل این ماشین ساختار 90 00:04:34,210 --> 00:04:35,200 نوع داده. 91 00:04:35,200 --> 00:04:39,966 بنابراین هر متغیر از داده ساختار ماشین نوع، مانند ماشین من، من می توانید ماشین من می گویند 92 00:04:39,966 --> 00:04:44,030 سال نقطه برابر و سپس اختصاص دادن برخی از آن مقدار صحیح، 2011. 93 00:04:44,030 --> 00:04:47,290 من ماشین دات صفحه برابر CS50. 94 00:04:47,290 --> 00:04:51,180 من کارت نقطه کیلومترشمار برابر 50505 نقطه و ویرگول. 95 00:04:51,180 --> 00:04:53,270 همه کسانی که کاملا خوب و این که 96 00:04:53,270 --> 00:04:57,802 چگونه دسترسی ما زمینه های ساختار. 97 00:04:57,802 --> 00:05:00,260 سازه های، هر چند، لازم نیست را روی پشته ایجاد می شود. 98 00:05:00,260 --> 00:05:02,950 فقط هر متغیر دیگر دوست دارید، ما می توانید به صورت پویا آنها اختصاص دهند. 99 00:05:02,950 --> 00:05:06,309 اگر ما یک برنامه ای است که ممکن است می شود تولید ساختارهای بسیاری است، 100 00:05:06,309 --> 00:05:08,100 ما نمی دانیم که چگونه بسیاری از ما قصد داریم به نیاز دارید، 101 00:05:08,100 --> 00:05:10,800 پس از آن ما را به صورت پویا نیاز اختصاص آن ساختار 102 00:05:10,800 --> 00:05:12,960 به عنوان برنامه های ما در حال اجرا است. 103 00:05:12,960 --> 00:05:16,600 و به این ترتیب اگر ما قصد داریم برای دسترسی به زمینه های یک ساختار در این زمینه، 104 00:05:16,600 --> 00:05:20,660 به یاد بیاورید که ما برای اولین بار به dereference نیاز اشاره گر به ساختار، 105 00:05:20,660 --> 00:05:24,810 و پس از آن زمانی که ما ارجاع اشاره گر، پس ما می توانیم زمینه دسترسی داشته باشید. 106 00:05:24,810 --> 00:05:26,830 اگر ما تنها دارند اشاره گر به ساختار، 107 00:05:26,830 --> 00:05:32,120 ما نه تنها می توانید می گویند درست اشاره گر نقطه نام و آنچه که ما دنبال آن هستید. 108 00:05:32,120 --> 00:05:34,259 این گام اضافی از غیر مرجع وجود دارد. 109 00:05:34,259 --> 00:05:36,050 بنابراین اجازه دهید بگویم که به جای آن از previous-- 110 00:05:36,050 --> 00:05:38,770 درست مثل مثال قبلی، به جای اعلام آن 111 00:05:38,770 --> 00:05:43,680 در پشته، ماشین ساختار، من ماشین، نقطه و ویرگول، من می گویم ماشین ساختار، 112 00:05:43,680 --> 00:05:48,020 ستاره، یک اشاره گر به ماشین ساختار به نام ماشین من، 113 00:05:48,020 --> 00:05:51,250 برابر اندازه از malloc از ماشین ساختار. 114 00:05:51,250 --> 00:05:54,950 اندازه ما به شکل از چگونه بسیاری از بایت نوع داده جدید خود را طول می کشد تا. 115 00:05:54,950 --> 00:05:58,570 شما لزوما تنها نیاز به استفاده از اندازه، عرض، INT، یا کاراکتر، و یا هر 116 00:05:58,570 --> 00:05:59,715 از ساخته شده است در انواع داده. 117 00:05:59,715 --> 00:06:02,090 کامپایلر به اندازه کافی هوشمند است به شکل از چگونه بسیاری از بایت 118 00:06:02,090 --> 00:06:04,170 با ساختار جدید خود را مورد نیاز است. 119 00:06:04,170 --> 00:06:09,610 بنابراین من خودم یک واحد حافظه از malloc به اندازه کافی بزرگ برای برگزاری یک ماشین ساختار، 120 00:06:09,610 --> 00:06:12,410 و من یک اشاره گر تماس به آن بلوک از حافظه، 121 00:06:12,410 --> 00:06:16,090 و اشاره گر به ماشین من اختصاص داده است. 122 00:06:16,090 --> 00:06:18,050 >> در حال حاضر، اگر من به دسترسی خواهید زمینه های ماشین من، 123 00:06:18,050 --> 00:06:22,615 من برای اولین بار با استفاده از ماشین من ارجاع اپراتور ارجاع، ستاره 124 00:06:22,615 --> 00:06:26,620 که ما از اشاره گر دیده ام فیلم ها، و سپس بعد از من ارجاع، 125 00:06:26,620 --> 00:06:32,200 پس از آن من می توانید از عملگر نقطه به استفاده از زمینه های مختلف از ماشین من دسترسی داشته باشید. 126 00:06:32,200 --> 00:06:35,490 ستاره ماشین من نقطه سال برابر 2011 127 00:06:35,490 --> 00:06:38,480 که به اثر دارند ما در این مورد می خواهید، 128 00:06:38,480 --> 00:06:41,960 چرا که ما به صورت پویا ام اختصاص ماشین من. 129 00:06:41,960 --> 00:06:43,610 >> این نوع از آزار دهنده است، هر چند، درست است؟ 130 00:06:43,610 --> 00:06:44,818 یک فرآیند 2 مرحله وجود دارد. 131 00:06:44,818 --> 00:06:47,460 در حال حاضر ما به dereference-- ما یک اپراتور ستاره، 132 00:06:47,460 --> 00:06:48,910 و ما باید یک عملگر نقطه. 133 00:06:48,910 --> 00:06:51,660 و به عنوان شما ممکن است انتظار، به دلیل برنامه نویسان C را دوست دارم راه کوتاه تر 134 00:06:51,660 --> 00:06:53,740 برای انجام کارهای است، یک وجود دارد راه کوتاه تر به انجام این کار. 135 00:06:53,740 --> 00:06:57,790 است اپراتور دیگری به نام فلش وجود دارد، که باعث می شود این فرآیند بسیار ساده تر. 136 00:06:57,790 --> 00:07:00,750 راه فلش کار می کند برای اولین بار ارجاع 137 00:07:00,750 --> 00:07:03,560 اشاره گر در سمت چپ طرف اپراتور، 138 00:07:03,560 --> 00:07:06,620 و پس از آن، پس از بصورت غیر مرجع اشاره گر در سمت چپ، 139 00:07:06,620 --> 00:07:09,620 به آن دسترسی میدان در سمت راست. 140 00:07:09,620 --> 00:07:14,170 و به این ترتیب پیش از ما این نوع بود ستاره ماشین من نقطه تمام این مسائل، 141 00:07:14,170 --> 00:07:15,880 مانند بسیاری رفتن وجود دارد وجود دارد. 142 00:07:15,880 --> 00:07:22,040 اما چیزی که ما به جای می توانید انجام دهید this-- است من ماشین پیکان سال برابر 2011 143 00:07:22,040 --> 00:07:23,580 >> باز هم، آنچه اتفاق می افتد که اینجا هستید؟ 144 00:07:23,580 --> 00:07:25,720 برای اولین بار، من غیر مرجع ماشین من. 145 00:07:25,720 --> 00:07:27,810 که دوباره، یک اشاره گر است در اینجا. 146 00:07:27,810 --> 00:07:31,270 سپس، پس از داشتن بصورت غیر مرجع ماشین من، من 147 00:07:31,270 --> 00:07:35,130 پس از آن می توانید در زمینه دسترسی به سال، بشقاب، و کیلومترشمار 148 00:07:35,130 --> 00:07:40,020 همانطور که من می تواند قبل از داشتن اولین ستاره مورد استفاده برای ارجاع دوباره به ماشین من، 149 00:07:40,020 --> 00:07:42,020 و نقطه برای دسترسی به این زمینه است. 150 00:07:42,020 --> 00:07:45,290 بنابراین شما می توانید ساختار، شما می توانید اشاره گر به سازه ها، 151 00:07:45,290 --> 00:07:48,360 و شما باید راه برای دسترسی به زمینه های آن ساختار، 152 00:07:48,360 --> 00:07:52,600 آیا شما باید اشاره گر به آنها و یا متغیرهای خود را دارند. 153 00:07:52,600 --> 00:07:57,640 نقطه و یا فلش، بسته به چگونه متغیر اعلام شد. 154 00:07:57,640 --> 00:08:00,510 من داگ لوید هستم، این CS50. 155 00:08:00,510 --> 00:08:01,975