>> [இசை]
>> டக் LLOYD: சரி.
நாம் முழு வேலை பார்த்து நாம் கதாபாத்திரங்கள் வேலை பார்த்து
நாம் மிதவைகள் வேலை பார்த்து இரட்டையர், சரங்களை, மற்றும் bools.
நாம் எவ்வளவு அழகாக வெளியேற்றினால் என்ன [செவிக்கு புலப்படாமல்] வகையான என்று
சேர்ந்து எங்களுக்கு அனைத்து கிடைக்கின்றன.
ஆனால் இப்போது நாம் இன்னும் ஏதாவது செய்ய வேண்டும்.
நாம் எப்படி செய்ய வேண்டும்?
எப்படி நாம் வெவ்வேறு தரவு வகைகள் உருவாக்குவது?
நாம் கட்டமைப்புகள் பயன்படுத்தி செய்ய முடியும்.
எனவே கட்டமைப்புகள் நம்மை ஐக்கியப்படுத்திக்கொள்ளாமல் அனுமதிக்கின்றன வெவ்வேறு வகையான மாறிகள்
ஒரு ஒற்றை, புதிய மாறி வகை, இது நாம் தனது சொந்த வகை பெயர் ஒதுக்க முடியும்.
இந்த ஒரு வலிமையான ஆகிறது விஷயம், செய்ய முடியும்
நாம் குழு இப்போது முடியும், ஏனெனில் வெவ்வேறு தரவு வகைகள் கூறுகள்
ஒன்றாக ஒரு தருக்க இணைப்பு வேண்டும் என்று.
நாம் இதை செய்ய முடிந்தது அப்படி அணிகளை கொண்டு, சரியான?
நாம் குழு முடியாது மாறிகள் அதே தரவு வகை
ஒன்றாக ஒரு பெரிய அலகு நினைவகம், ஒரு வரிசை.
>> ஆனால் நாம் கலந்து முடியவில்லை ஒன்றாக பல்வேறு தரவு வகைகள்.
நாம், ஒரு முழு எண் ஜோடி சொல்ல முடியாது, மற்றும் ஒரு பாத்திரம், மற்றும் ஒரு இரட்டை அனைத்து
அதே விஷயம் மற்றும் ஒரு அலகு என்று அழைக்க.
ஆனால் கட்டமைப்புகள், அல்லது அடிக்கடி, structs போன்ற குறிப்பிடப்படுகிறது
நாம் உண்மையில் முடியும்.
எனவே ஒரு அமைப்பு வகையான உள்ளது ஒரு சூப்பர் மாறி போன்ற.
அது கொண்டுள்ளது என்று ஒரு மாறி தான் அது உள்ளே மற்ற மாறிகள்.
எனவே இங்கே ஒரு எடுத்துக்காட்டு ஒரு மிக எளிய அமைப்பு.
இந்த இலக்கணத்தை இருக்க வேண்டும் என்பது தான் ஒரு கார் ஒரு அமைப்பு உருவாக்க விரும்புகிறேன்.
இப்போது, இங்கு தொடரியல் மூலம் செல்லலாம்.
Struct, என்று குறிக்கிறது என்று சொல்
நான் இங்கே ஒரு புதிய தரவு வகை உருவாக்க நான் என்று.
குறிப்பாக, தரவு வகை பெயர் நாம் பார்க்க வேண்டும் என,, struct கார் இருக்க போகிறது.
ஆனால் இந்த முனை வகை ஒடுக்கி ஆஃப் என்று இந்த
மாறிகள் ஒரு குழுவாக என்று போகிறது அதே வகை பகுதியாக கருதப்படுகிறது
ஒரு நிமிடம்.
>> கார்கள், அமைப்பு வெறும் பெயர்.
மீண்டும், இங்கே தரவு வகை போகிறது , struct கார், இல்லை வெறும் கார் இருக்க வேண்டும்.
ஆனால் நீங்கள் வெவ்வேறு இருந்தால் நீங்கள் பல structs உருவாக்க என்றால்
அதே திட்டத்தில், நீங்கள் வேண்டும் , struct மற்றும் struct வேறுபடுத்தி.
எனவே struct கார், நான் வேண்டும் மாணவர் struct, எடுத்துக்காட்டாக,
அதே திட்டத்தில்.
சுருள் ப்ரேஸ் உள்ளே இருக்கும் என்று அழைக்கப்படும் அனைத்து துறைகளில்
அல்லது கட்டமைப்பு உறுப்பினர்கள்.
எனவே விஷயங்கள் சில என்ன ஒரு கார் உள்ளார்ந்த என்று?
சரி, அது வழக்கமாக, ஒரு ஆண்டு உள்ளது ஒரு மாதிரி பெயர், மற்றும் ஒரு உரிமம் தட்டு,
வழக்கமாக உள்ளது என்று ஒரு odometer அது மைல் சில பல,
மற்றும் ஒருவேளை ஒரு இயந்திரம் அளவு.
நீங்கள் பார்க்க முடியும் என, நான் கலந்து கொண்டிருக்கிறேன் முழு எண்கள் மற்றும் எழுத்துக்கள் மற்றும் இரட்டையர்.
அவர்கள் அனைத்து போகிறீர்கள் இந்த புதிய தரவு வகை பகுதியாக.
>> இறுதியாக, இறுதி காரியம் செய்ய வேண்டும், இந்த சிறிய அரைப்புள்ளி மறக்க வேண்டாம்
முடிவில்.
நாங்கள் அமைப்பு வரையறை முடிந்த பிறகு, நாம் முடிவில் ஒரு அரைப்புள்ளி வைத்து கொள்ள வேண்டும்.
அது ஒரு மிகவும் பொதுவான உட்தொடாச்செயற் தான் தவறு, ஒரு செயல்பாடு, ஏனெனில்,
உதாரணமாக, நீங்கள் வேண்டும் திறந்த சுருள் பிரேஸ், நெருங்கிய சுருள் பிரேஸ்.
நீங்கள் ஒரு அரைப்புள்ளி வைத்து செயல்பாடு வரையறை இறுதியில்.
இந்த ஒரு செயல்பாடு தெரிகிறது வரையறை, ஆனால் அது இல்லை,
அதனால் அரைப்புள்ளி அங்கு ஒரு நினைவூட்டல் ஆகும் என்று நீங்கள்
ஏனெனில், அங்கு அதை செய்ய வேண்டும் மொழி அல்ல இல்லையெனில் சாப்பிடுவேன்
அதை செய்ய என்ன தெரியும்.
அது ஒரு மிகவும் பொதுவான பிழை தற்செயலாக செய்ய
நீங்கள் முதலில் கட்டமைப்புகள் வரையறுப்பது.
>> சரி.
எனவே நாம் பொதுவாக நம் கட்டமைப்புகள் வரையறுக்கிறோம் நமது திட்டங்கள் மிகவும் மேல்
அவர்கள் ஒருவேளை போகிறோம் என்பதால் பல செயல்பாடுகளை பயன்படுத்த வேண்டிய.
நாம் ஒரு வரையறுக்க வேண்டும் ஒரு செயல்பாடு உள்ளே struct,
பின்னர் நாம் only-- முடியும் என்பதால், அமைப்பு நோக்கம் உண்மையில்
அந்த செயல்பாடு உள்ளே உள்ளது.
நாம் அநேகமாக ஒரு கட்டமைப்பு மற்றும் வரையறுக்க வேண்டும் என்று எனவே நாம் பல செயல்பாடுகளை அதை பயன்படுத்த முடியும்,
அல்லது ஒருவேளை பல உள்ள பிணைக்கப்பட்டுள்ளன என்று கோப்புகளை
நம் ஒற்றை திட்டத்தை உருவாக்க.
சில நேரங்களில் பதிலாக அமைப்பு வரையறுக்கும்
நீங்கள் வைத்து, அங்கு மிக சிறந்த உங்கள் , பவுண்டு அடங்கும் மற்றும் உங்கள் பவுண்டு வரையறுக்கிறது
உதாரணமாக, நீங்கள் அவர்களை வைக்க வேண்டும் தனி டாட் மணி கோப்புகளை, பின்
பவுண்டு உங்களை அடங்கும்.
>> எனவே நாம் கட்டமைப்புகள் வேண்டும், ஆனால் இப்போது நாங்கள் அவர்களை உள்ளே பெற வேண்டும்.
எப்படி நாம் உள்ளே பெற அணுக ஒரு அமைப்பு
அந்த துணை மாறிகள், அந்த மாறிகள் அந்த அமைப்பு உள்ளே காணப்படுகின்றன?
சரி, நாம் என்று ஒன்று இருக்கிறது எங்களுக்கு அனுமதிக்கிறது டாட் ஆபரேட்டர்
அமைப்பு துறைகள் அணுக வேண்டும்.
எனவே எடுத்துக்காட்டாக, நான் அறிவித்தார் நான் சொல்கிறேன் என் அமைப்பில் தரவு எங்காவது தட்டச்சு
என் மேல் உள்ள, அல்லது ஒருவேளை இல் நான் பவுண்டு என்று சொல் டாட் மணி கோப்பு சேர்க்கப்படவில்லை.
நான் பின்னர் ஒரு புதிய உருவாக்க வேண்டும் என்றால் தரவு வகை மாறி, நான் சொல்ல முடியும்
, struct கார், என் கார், அரைப்புள்ளி.
நான் எண்ணாக சொல்ல முடியும் போல் x, அல்லது சரம் பெயர் அரைப்புள்ளி.
>> இங்கே தரவு வகை,, struct கார் ஆகிறது மாறி பெயரை, என்னுடைய கார்
பின்னர் நான் டாட் ஆபரேட்டர் பயன்படுத்த முடியும் என் கார் பல்வேறு துறைகளில் அணுக.
எனவே நான் என் காரை சொல்ல முடியும் டாட் 2011 ஆம் ஆண்டு சமம்.
அந்த செய்தபின் நல்லது.
நீங்கள் நினைவு என்றால் வருடம், ஒரு வரையறுக்கப்பட்டுள்ளது, இந்த struct கார் உள்ளே முழு துறையில்
தரவு வகை.
, Struct கார் தரவு எனவே எந்த மாறி வகை, போன்ற என் கார், நான் என் கார் சொல்ல முடியும்
டாட் ஆண்டுக்குச் சமம் பின்னர் ஒதுக்க அது சில முழு மதிப்பு, 2011.
எனது கார் டாட் தட்டில், CS50 சமம்.
என் அட்டை டாட் odometer 50505 அரைப்புள்ளி சமம்.
அந்த அனைத்து உள்ளன நன்றாக, என்று
நாம் அணுக எப்படி அமைப்பு துறைகள்.
கட்டமைப்புகள், எனினும், தேவையில்லை ஸ்டாக் உருவாக்கப்பட வேண்டும்.
வெறும் நாம், எந்த மாறி விரும்புகிறேன் மாறும் அவர்களுக்கு ஒதுக்க முடியும்.
நாம் ஒரு திட்டத்தை இருந்தால் அந்த வலிமை பல கட்டமைப்புக்களை உருவாக்கும் வேண்டும்,
நாம் எவ்வளவு தெரியாது நாம் வேண்டும் போகிறோம்
பின்னர் நாம் மாறும் வேண்டும் அந்த கட்டமைப்புகள் ஒதுக்க
எங்கள் திட்டம் இயங்கும்.
நாம் அணுக போகிறீர்கள் என்றால் அந்த சூழலில் ஒரு அமைப்பு துறைகள்,
நாம் முதலில், dereference வேண்டும் என்று திரும்ப அமைப்பு சுட்டிக்காட்டி,
பின்னர் நாம் ஒரு முறை, dereference சுட்டிக்காட்டி, நாங்கள் துறைகள் அணுக முடியும்.
நாம் மட்டுமே இருந்தால் அமைப்பு சுட்டிக்காட்டி,
நாங்கள் தான் முள்ளோடு டாட் துறையில் சொல்ல முடியாது பெயர் மற்றும் நாம் தேடும் என்ன கிடைக்கும்.
Dereferencing ஒரு கூடுதல் படி இருக்கிறது.
எனவே என்று சொல்கிறேன் அதற்கு பதிலாக previous-- இன்
வெறும் முந்தைய உதாரணம் போல, அதற்கு பதிலாக அதை அறிவிக்கும்
ஸ்டாக்,, struct கார், என் கார், அரைப்புள்ளி, நான், struct கார் சொல்கிறேன்
நட்சத்திரம், ஒரு ஒரு சுட்டிக்காட்டி , struct கார், என் கார் என்று அழைக்கப்படும்
, struct கார் malloc அளவு சமம்.
எத்தனை நாங்கள் அளவு கண்டுபிடிக்க வேண்டும் உங்கள் புதிய தரவு வகை எடுத்து பைட்டுகள்.
நீங்கள் அவசியம் மட்டுமே பயன்படுத்த தேவையில்லை அகலம், முழு எண்ணாக, அல்லது கரி, அல்லது எந்த அளவு
உள்ளமைக்கப்பட்ட தரவு வகைகள்.
ஒடுக்கி போதுமான ஸ்மார்ட் உள்ளது எவ்வளவு பைட்டுகள் கண்டுபிடிக்க
உங்கள் புதிய அமைப்பு தேவைப்படுகிறது.
அதனால் நான் நினைவகம் ஒரு அலகு malloc ஒரு struct கார் நடத்த போதுமான பெரிய,
நான் மீண்டும் ஒரு சுட்டிக்காட்டி கிடைக்கும் நினைவகம் என்று தொகுதி,
என்று சுட்டிக்காட்டி என் கார் ஒதுக்கப்படும்.
>> இப்போது, நான் அணுக வேண்டும் என்றால் என் கார் துறைகள்,
நான் முதல் என் கார், dereference பயன்படுத்தி dereference ஆபரேட்டர், நட்சத்திரம்
நாம் சுட்டிகள் இருந்து பார்த்த வீடியோக்கள், பின்னர் நான் dereference பிறகு,
பின்னர் நான் டாட் ஆபரேட்டர் பயன்படுத்த முடியும் என் கார் பல்வேறு துறைகளில் அணுக.
2011 ஆம் ஆண்டு சமம் டாட் என் கார் நட்சத்திரமிடவும்.
அந்த விளைவை ஏற்படுத்தும் நாம் இந்த வழக்கில் வேண்டும்,
நாம் மாறும் நான் ஏனெனில் என் கார் ஒதுக்கப்பட்டுள்ளது.
>> அந்த உரிமை, எனினும், வகையான எரிச்சலூட்டும் தான்?
இப்போது ஒரு 2-படி வழிமுறை இருக்கிறது.
இப்போது நாம் dereference-- வேண்டும் நாம் ஒரு நட்சத்திரம் ஆபரேட்டர் வேண்டும்,
நாம் ஒரு டாட் ஆபரேட்டர் வேண்டும்.
நீங்கள் எதிர்பார்க்க முடியும் என, ஏனெனில் சி புரோகிராமர்கள் குறுகிய வழிகளில் அன்பு
விஷயங்களை செய்ய, ஒரு உள்ளது குறுகிய வழி இதை செய்ய.
அம்புக்குறி என்று மற்றொரு ஆபரேட்டர் உள்ளது, இந்த செயற்பாட்டின் ஒரு நிறைய எளிதாக்குகிறது.
அம்புக்குறி வேலை வழி அது முதல் dereferences
இடது சுட்டிக்காட்டி ஆபரேட்டர் பக்கத்தில்,
பின்னர், பின்னர் dereferenced இடது சுட்டிக்காட்டி,
அது வலது துறையில் அணுகுகிறது.
அதனால் முன்பு நாங்கள் இந்த வகையான இருந்தது என் கார், இந்த பொருட்கள் அனைத்தையும் dot
போன்ற அங்கு என்ன நடக்கிறது நிறைய இருந்தது.
ஆனால் நாம் என்ன செய்ய முடியும் இதை ஆகிறது என் கார் அம்பு 2011 ஆம் ஆண்டு சமம்.
>> மீண்டும், இங்கே என்ன நடக்கிறது?
முதல், நான் என் கார் dereferencing என்று.
எந்த மீண்டும், இங்கே ஒரு சுட்டிக்காட்டி இருக்கிறது.
பின்னர், கொண்ட பிறகு நான், என் கார் dereferenced
பின்னர் துறைகள் அணுக முடியும் ஆண்டு, தகடு, மற்றும் odometer
நான் முடிந்தவரை முதல் முன் என் கார், dereference பயன்படுத்தப்படும் நட்சத்திரம்,
மற்றும் துறையில் அணுக dot.
எனவே நீங்கள், கட்டமைப்புகள் இருக்க முடியும் கட்டமைப்புகள் சுட்டிகளையும் முடியும்,
நீங்கள் அணுக வழிகளில் அந்த கட்டமைப்புகள் துறைகள்,
நீங்கள் சுட்டிகள் வேண்டும் என்பதை அவர்களை அல்லது மாறுபாடுகளாக இருக்கின்றன.
புள்ளி அல்லது அம்பு, பொறுத்து மாறி எப்படி அறிவிக்கப்பட்டது.
நான் டக் லாயிட் நான், இந்த CS50 உள்ளது.