>> [موسیقی]
>> داگ لوید: OK.
ما با اعداد صحیح کار کرده ام، ما با شخصیت های کار کرده ام،
ما شناور کار کرده ام، دو برابر، رشته ها، و bools.
ما تقریبا همه خسته ام از [نامفهوم] انواع که
همراه در دسترس همه ما بوده است.
اما در حال حاضر ما می خواهیم به انجام چیزی بیشتر.
چگونه ما انجام این کار؟
چگونه انواع داده های مختلف ایجاد می کنیم؟
ما می توانیم این کار را با استفاده از ساختار است.
بنابراین ساختار به ما اجازه متحد متغیرهای از انواع مختلف
به تک، نوع متغیر جدید، که ما می توانیم نام نوع خود اختصاص دهید.
این واقعا قوی چیزی که قادر به انجام این کار،
چرا که ما هم اکنون می توانید گروه عناصر انواع داده های مختلف
با هم که یک اتصال منطقی است.
ما قادر به انجام این کار شده است با آرایه های مرتب کردن بر اساس، درست است؟
ما می توانید متغیرهای گروه از نوع داده های مشابه
با هم در یک واحد بزرگ حافظه، یک آرایه.
>> اما ما قادر به ترکیب شده است تا انواع مختلف داده ها با هم.
ما نمی توانیم، می گویند، جفت یک عدد صحیح، و یک شخصیت، و دو برابر همه
در همین و پاسخ که یک واحد.
اما با سازه، و یا اغلب به عنوان ساختمانها اشاره شد،
ما در واقع می توانید.
بنابراین یک ساختار است مرتب سازی بر مانند یک متغیر فوق العاده.
این یک متغیر که شامل است سایر متغیرهای داخل آن است.
بنابراین در اینجا یک مثال از یک ساختار بسیار ساده است.
این چیزی است که ترکیب این دستور نگاه می خواهم برای ایجاد یک ساختار برای ماشین.
در حال حاضر، اجازه دهید از طریق نحو به اینجا بروید.
ساختار، که این کلمات کلیدی که نشان می دهد
که من ایجاد یک نوع داده جدید در اینجا.
به طور خاص، نام نوع داده است رفتن به ماشین ساختار، همانطور که خواهیم دید.
اما این نوع از نوک است به کامپایلر که این
به عنوان یک گروه از متغیرها است که رفتن به بخشی از همان نوع در نظر گرفته شود
در دقیقه.
>> اتومبیل، فقط نام ساختار.
باز هم، نوع داده ها در اینجا است که به ماشین ساختار، نه فقط خودرو.
اما اگر شما different-- اگر شما ایجاد ساختمانها چند
در همان برنامه، شما نیاز به تمایز بین ساختار و ساختار.
خودرو پس ساختار، من هم ممکن است دانش آموز ساختار، برای مثال،
در همان برنامه است.
داخل آکولاد هستند تمام زمینه به اصطلاح،
و یا اعضای از ساختار.
پس چه برخی از چیزهایی هستند که ذاتی در یک ماشین است؟
خب، آن را معمولا یک سال، است یک نام مدل، و یک پلاک،
سیستم اندازه گیری فاصله که معمولا دارای برخی از تعدادی از مایل بر روی آن،
و شاید به اندازه موتور.
و به عنوان شما می توانید ببینید، من مخلوط کردن اعداد صحیح و شخصیت و دو برابر.
آنها همه در حال رفتن به بخشی از این نوع داده های جدید.
>> در نهایت، آخرین چیزی که من باید انجام دهید، این نقطه و ویرگول کمی فراموش نکنید
در پایان.
پس از پایان تعریف ساختار، ما نیاز به قرار دادن یک نقطه و ویرگول در پایان.
این نحوی بسیار معمول است اشتباه، چرا که با یک تابع،
برای مثال، شما فقط باید آکولاد باز، آکولاد نزدیک است.
شما یک نقطه و ویرگول در قرار داده نشده پایان تعریف یک تابع.
این به نظر می رسد مانند یک تابع تعریف، اما این طور نیست،
و بنابراین از نقطه ویرگول وجود دارد فقط یک یادآوری است که شما
نیاز به آن را وجود دارد، چرا کامپایلر غیر این صورت نمی
بدانید که چه باید با آن است.
این یک خطای بسیار معمول است به طور تصادفی را
وقتی که شما اول در حال تعریف سازه ها.
>> باشه.
بنابراین ما معمولا ساختارهای ما را تعریف در بالا بسیار از برنامه های ما
چرا که آنها احتمالا به توابع چندگانه استفاده شود.
ما نمی خواهیم به تعریف یک ساختار داخل یک تابع،
چرا که پس از ما می توانیم only-- دامنه ساختار واقعا
تنها در داخل آن تابع وجود دارد.
ما احتمالا می خواهم می خواهم به تعریف یک ساختار بنابراین ما می توانیم آن را در توابع مختلف استفاده کنید،
یا شاید در چند فایل هایی که به هم گره خورده
برای ایجاد برنامه های تک ما است.
گاهی اوقات نیز به جای از تعریف ساختار
در بالا بسیار که در آن شما را خود پوند شامل و پوند خود را تعریف می کند،
برای مثال، شما ممکن است آنها را در قرار فایل های نقطه ساعت جداگانه، که بعد از آن شما
پوند شامل خودتان.
>> بنابراین ما باید ساختارها، اما در حال حاضر ما باید در داخل آنها را دریافت کنید.
چگونه ما در داخل گرفتن یک ساختار برای دسترسی به
کسانی که زیر متغیرها، متغیرهای که در داخل ساختار وجود دارد؟
خب، ما چیزی به نام عملگر نقطه، که به ما اجازه می دهد تا
برای دسترسی به زمینه های ساختار.
بنابراین برای مثال، اجازه دهید بگویم من اعلام کرده ام نوع داده ساختار من در جایی
در بالای برنامه من، یا شاید در یک فایل نقطه ساعت که من پوند را گنجانده شده است.
اگر من پس از آن خواهید برای ایجاد یک جدید متغیر از نوع داده که، می توانم بگویم،
ماشین ساختار، ماشین من، نقطه و ویرگول.
درست مثل من می تواند از نوع int می گویند X، و یا نام رشته و ویرگول بدین.
>> نوع داده ها در اینجا ماشین struct است، نام متغیر ماشین من است،
و پس از آن می توانید از عملگر نقطه به استفاده از زمینه های مختلف از ماشین من دسترسی داشته باشید.
بنابراین من می تواند ماشین من می گویند نقطه سال برابر 2011
که کاملا خوب.
سال، اگر شما به خاطر، به عنوان یک تعریف شد درست است عدد صحیح در داخل این ماشین ساختار
نوع داده.
بنابراین هر متغیر از داده ساختار ماشین نوع، مانند ماشین من، من می توانید ماشین من می گویند
سال نقطه برابر و سپس اختصاص دادن برخی از آن مقدار صحیح، 2011.
من ماشین دات صفحه برابر CS50.
من کارت نقطه کیلومترشمار برابر 50505 نقطه و ویرگول.
همه کسانی که کاملا خوب و این که
چگونه دسترسی ما زمینه های ساختار.
سازه های، هر چند، لازم نیست را روی پشته ایجاد می شود.
فقط هر متغیر دیگر دوست دارید، ما می توانید به صورت پویا آنها اختصاص دهند.
اگر ما یک برنامه ای است که ممکن است می شود تولید ساختارهای بسیاری است،
ما نمی دانیم که چگونه بسیاری از ما قصد داریم به نیاز دارید،
پس از آن ما را به صورت پویا نیاز اختصاص آن ساختار
به عنوان برنامه های ما در حال اجرا است.
و به این ترتیب اگر ما قصد داریم برای دسترسی به زمینه های یک ساختار در این زمینه،
به یاد بیاورید که ما برای اولین بار به dereference نیاز اشاره گر به ساختار،
و پس از آن زمانی که ما ارجاع اشاره گر، پس ما می توانیم زمینه دسترسی داشته باشید.
اگر ما تنها دارند اشاره گر به ساختار،
ما نه تنها می توانید می گویند درست اشاره گر نقطه نام و آنچه که ما دنبال آن هستید.
این گام اضافی از غیر مرجع وجود دارد.
بنابراین اجازه دهید بگویم که به جای آن از previous--
درست مثل مثال قبلی، به جای اعلام آن
در پشته، ماشین ساختار، من ماشین، نقطه و ویرگول، من می گویم ماشین ساختار،
ستاره، یک اشاره گر به ماشین ساختار به نام ماشین من،
برابر اندازه از malloc از ماشین ساختار.
اندازه ما به شکل از چگونه بسیاری از بایت نوع داده جدید خود را طول می کشد تا.
شما لزوما تنها نیاز به استفاده از اندازه، عرض، INT، یا کاراکتر، و یا هر
از ساخته شده است در انواع داده.
کامپایلر به اندازه کافی هوشمند است به شکل از چگونه بسیاری از بایت
با ساختار جدید خود را مورد نیاز است.
بنابراین من خودم یک واحد حافظه از malloc به اندازه کافی بزرگ برای برگزاری یک ماشین ساختار،
و من یک اشاره گر تماس به آن بلوک از حافظه،
و اشاره گر به ماشین من اختصاص داده است.
>> در حال حاضر، اگر من به دسترسی خواهید زمینه های ماشین من،
من برای اولین بار با استفاده از ماشین من ارجاع اپراتور ارجاع، ستاره
که ما از اشاره گر دیده ام فیلم ها، و سپس بعد از من ارجاع،
پس از آن من می توانید از عملگر نقطه به استفاده از زمینه های مختلف از ماشین من دسترسی داشته باشید.
ستاره ماشین من نقطه سال برابر 2011
که به اثر دارند ما در این مورد می خواهید،
چرا که ما به صورت پویا ام اختصاص ماشین من.
>> این نوع از آزار دهنده است، هر چند، درست است؟
یک فرآیند 2 مرحله وجود دارد.
در حال حاضر ما به dereference-- ما یک اپراتور ستاره،
و ما باید یک عملگر نقطه.
و به عنوان شما ممکن است انتظار، به دلیل برنامه نویسان C را دوست دارم راه کوتاه تر
برای انجام کارهای است، یک وجود دارد راه کوتاه تر به انجام این کار.
است اپراتور دیگری به نام فلش وجود دارد، که باعث می شود این فرآیند بسیار ساده تر.
راه فلش کار می کند برای اولین بار ارجاع
اشاره گر در سمت چپ طرف اپراتور،
و پس از آن، پس از بصورت غیر مرجع اشاره گر در سمت چپ،
به آن دسترسی میدان در سمت راست.
و به این ترتیب پیش از ما این نوع بود ستاره ماشین من نقطه تمام این مسائل،
مانند بسیاری رفتن وجود دارد وجود دارد.
اما چیزی که ما به جای می توانید انجام دهید this-- است من ماشین پیکان سال برابر 2011
>> باز هم، آنچه اتفاق می افتد که اینجا هستید؟
برای اولین بار، من غیر مرجع ماشین من.
که دوباره، یک اشاره گر است در اینجا.
سپس، پس از داشتن بصورت غیر مرجع ماشین من، من
پس از آن می توانید در زمینه دسترسی به سال، بشقاب، و کیلومترشمار
همانطور که من می تواند قبل از داشتن اولین ستاره مورد استفاده برای ارجاع دوباره به ماشین من،
و نقطه برای دسترسی به این زمینه است.
بنابراین شما می توانید ساختار، شما می توانید اشاره گر به سازه ها،
و شما باید راه برای دسترسی به زمینه های آن ساختار،
آیا شما باید اشاره گر به آنها و یا متغیرهای خود را دارند.
نقطه و یا فلش، بسته به چگونه متغیر اعلام شد.
من داگ لوید هستم، این CS50.