[Powered by Google Translate] அது structs பற்றி பேசலாம்.
Structs ஒன்றாக மாறிகள் ஒரு கொத்து குழு ஒரு வழி நமக்கு வழங்கும்
ஒரு நல்ல தொகுப்பில்.
இது, இப்போதே ஒரு உதாரணமாக பார்க்க அநேகமாக எளிதான விஷயம்
எனவே, struct என்று
பின்னர், சுருள் பிரேஸ் திறந்து
இந்த struct, நாம், ஒரு முழு எண்ணாக வயது வேண்டும்
ஒரு எரிப்பதை * பெயர்,
அவ்வளவு தான்.
அது, ஒரு சுருள் பிரேஸ் பிறகு ஒரு அரைப்புள்ளி ஒரு வித்தியாசமான தோன்றலாம்
ஆனால் அது structs கொண்டு தேவையான உண்மையில் தான்.
எந்த செல்லுபடியாகும் வகை struct வரையறையில் போக முடியும்.
இங்கே, நாம், ஒரு முழு எண்ணாக மற்றும் ஒரு எரிப்பதை * பயன்படுத்தப்படும்
ஆனால் நீங்கள், சொன்னதை பற்றி, 100 உறுப்புகள் வரிசை பயன்படுத்த முடியும்
அல்லது வேறு struct.
நீங்கள் சி structs பயன்படுத்தும் போது,
நீங்கள் புதிய வகையான உருவாக்கும்
மற்ற வகையான தொகுப்பு வெளியே.
இங்கே, நாங்கள் ஒரு புதிய வகை செய்யும்
ஒரு முழு எண் மற்றும் ஒரு எரிப்பதை * வெளியே.
நாம் பிறகு பார்க்கலாம் என்று, ஒரு struct வகை
நீங்கள் பயன்படுத்த நீங்கள் எந்த வகை சமமான வழிகளை நிறைய இருக்கிறது.
பொதுவாக, நான் எப்படி ஒரு struct வகை ஒப்பிட்டு
ஒரு முழு எண் வகை போன்று உள்ளது.
நாம் எழுதியது குறியீடு செல்லுபடியாகும் சி உள்ளது, அதே நேரத்தில்
இது, மிகவும் பயனுள்ளதாக இல்லை
மற்றும் கணகண வென்ற சப்தம் நமக்கு ஒரு எச்சரிக்கை தரும்.
Structs மற்றும் அதன் போலவே நினைவிருக்கிறதா?
சரி, நாம் அடிப்படையில் தான் என்று
int,
இது ஒரு மிகவும் பயனுள்ளதாக வரி அல்ல.
எனவே உண்மையில் அந்த வகை மாறுபடும் என்று நாம்
இது அரைப்புள்ளி முன் ஒரு பெயர் கொடுத்து.
நாம் மாறி மாணவர் அழைக்கிறேன்.
இப்போது நாம் ஒரு மாறி என்று மாணவர் அறிவித்தார்
struct கொடுத்த வகை.
எப்படி நாம் struct உள்ளே மாறிகள் முடியும்?
இந்த மாறிகளை தொழில்நுட்ப, பெயர்கள்
உறுப்பினர்கள்.
ஒரு மாணவர் struct எந்த குறிப்பிட்ட உறுப்பினர் அணுக,
நீங்கள், மாறி பெயரை ஒரு புள்ளி append
நீங்கள் விரும்பும் உறுப்பினர் பெயர் தொடர்ந்து.
இங்கு, ஒரே 2 செல்லுபடியாகும் சாத்தியக்கூறுகள்
student.age இருக்கும்
மற்றும் student.name.
நாம் ஒன்று போல் செய்ய முடியும்
student.age = 12
மற்றும் student.name = மாணவர்.
இப்போது நாம் ஒரு இரண்டாவது மாணவர் கொள்ள வேண்டும் என்றால்?
நீங்கள் இந்த வரிகளை நகலெடுத்து ஒட்ட நினைக்கலாம்
மற்றும் மாணவர் 2 அல்லது ஏதோ மாணவர் மாற்ற,
அந்த வேலை,
ஆனால் தொழில்நுட்பரீதியாக, மாணவர் மற்றும் மாணவர் 2
அதே வகை இல்லை.
பார்க்க, நீங்கள் ஒருவருக்கொருவர் அவற்றை ஒதுக்க முடியாது.
இந்த, ஏனெனில், இதுவரை தான்
உங்கள் struct அநாமதேய வருகிறது.
நாம் அது ஒரு பெயர் கொடுக்க வேண்டும்.
அதை செய்ய, நாம் struct பெயர் சேர்க்க
வார்த்தை struct பிறகு.
மாணவர்,
வரையறை தொடர்ந்து.
நாம் இன்னும் உடனடியாக வகை மாறுபடும் அறிவிக்க முடியும்
நாம் முன்பு செய்தது போல், மாணவர் struct.
நாம் அது S1 அழைக்கிறேன்
Struct ஒரு பெயர் கொடுத்து,
நாம் இப்போது struct மாணவர் பயன்படுத்தலாம்
கிட்டத்தட்ட அதே வழியில் நாம் எண்ணாக பயன்படுத்த வேண்டும்.
எனவே, வகை struct மாணவர் ஒரு மாறி அறிவிக்க முடியும்
போன்ற
struct மாணவர் S2.
அணிகளை போல, structs, ஒரு குறுக்குவழி துவக்கும் தொடரியல் வழங்கும்
எனவே மாணவர் S2 struct, சொல்ல முடியாது
சமம்
இடது சுருள் பிரேஸ் 3, S2.
இங்கே, S2.age, 3 இருக்கும்
மற்றும் S2.name S2 சுட்டி.
ஒரு முழு எண்ணாக வகை நீங்கள் என்ன செய்ய முடியும் எல்லாம் நினைத்து
அவர்கள் மிகவும் ஒரு struct மாணவர் வகை செய்ய முடியும்.
நாம் ஒரு செயல்பாடு அளவுரு ஒரு வகை ஒரு struct மாணவர் பயன்படுத்தலாம்.
நாம் ஒரு புதிய struct உள்ளே struct மாணவர் பயன்படுத்தலாம்.
நாம் ஒரு struct மாணவர் ஒரு சுட்டிக்காட்டி முடியும்.
நாம் struct மாணவர் அளவு செய்ய முடியும்.
Struct மாணவர் ஒரு வகை
ஒரு எண்ணாக போன்ற ஒரு வகை.
நாங்கள் S2 செய்ய S1 ஒதுக்க முடியாது
இரண்டும் ஒரே வகையான இருப்பதால், நாம் என்ன செய்ய முடியும்
S1 = S2.
நாம் செய்தால் என்ன நடக்கும்
S1.age = 10?
அனைத்து S2 மாற்றம் என்ன?
மீண்டும், இது வழக்கமான முழு போன்ற structs என்று.
நாம் சில எண்ணாக ஒய் சில எண்ணாக எக்ஸ் ஒதுக்க வேண்டும்,
எக்ஸ் = Y போன்ற
பின்னர், எக்ஸ் மாற்ற
போன்ற எக்ஸ் + +
ஒய் மாற்றம்?
ஒய் இங்கே மாற்ற, அதனால் எந்த மேலே S2 இல்லை.
S2.age இன்னும் 3.
ஆனால் குறிப்பு மற்றொரு struct ஒதுக்க போது,
சுட்டிகள் அனைத்தும், அதையே சுட்டி
அவர்கள் வெறும் நகல் இருந்து.
நீங்கள் சுட்டிகள் பகிர்ந்து கொள்ள வேண்டும் என்றால்,
நீங்கள், கைமுறையாக என்று கையாள வேண்டும்
ஒருவேளை சுட்டிகள் ஒரு நினைவகம் ஒரு தொகுதி malicking மூலம் சுட்டிக்காட்ட
மற்றும் தரவு மீது நகல்.
இது எல்லா இடங்களிலும் struct மாணவர் எழுத வேண்டும் எரிச்சலூட்டும் இருக்கலாம்.
ஒரு வகை டெப் பயன்படுத்தி, நாம் என்ன செய்ய முடியும்
வகை வரையறை
struct
நாம் அது மாணவர் அழைக்கிறேன்.
இப்போது, நாம் எல்லா இடங்களிலும் மாணவர் பயன்படுத்தலாம்
நாம் struct மாணவர் பயன்படுத்த பயன்படுத்தப்படும் என்று.
இந்த வகை டெப் ஒரு அநாமதேய struct தான்
இது மாணவர் அழைப்பு விடுத்துள்ளது.
ஆனால் நாங்கள் மாணவர் அடையாளம் வைத்து இருந்தால்
வார்த்தை struct அடுத்த, typedef struct மாணவர் போல்,
நாங்கள் மாறி மாறி இப்போது struct மாணவர் மற்றும் மாணவர் இருவரும் பயன்படுத்த முடியும்.
அவர்கள் அதே பெயரை வைத்து இல்லை.
நாம் பாப் டெப் struct மாணவர் தட்டச்சு செய்ய
பின்னர் மாணவர் மற்றும் பாப் struct
ஒன்றுக்கொன்று வகைகள் இருக்கும்.
எந்த வகை வரையறை என்பது,
நாம் struct அடுத்த அடையாளம் தேவை
என்றால் struct வரையறை
மீண்டும் மீண்டும் இடம்பெறுவது.
உதாரணமாக,
வகை டெப் struct கணு
அது ஒரு முழு எண்ணாக Val வரையறுக்கப்பட்டுள்ளது
அது மற்றொரு struct முனை சுட்டி காட்டும் ஒரு சுட்டிக்காட்டி வேண்டும்.,
* அடுத்த struct முனை போன்ற.
மற்றும் நாம் அது முனை அழைக்கிறேன்.
இந்த struct, மீண்டும் மீண்டும் இடம்பெறுவது
struct முனை வரையறை அதற்குள்ளாக கொண்டுள்ளது இருந்து
ஒரு struct முனை ஒரு சுட்டிக்காட்டி.
நாம் struct முனை * அடுத்த சொல்ல வேண்டும் என்று நோட்டீஸ்
struct முனை வரையறை உள்ளே,
வகை டெப் அனுமதிக்க இன்னும் முடிக்கவில்லை என்பதால் இந்த எளிமைப்படுத்த
ஒரு முனை * அடுத்த.
நீங்கள் இந்த ஒத்த structs பற்றி மேலும் அறிய வேண்டும்
போது இணைக்கப்பட்ட பட்டியல்கள் மற்றும் மரங்கள் கையாள்வதில்.
ஒரு விழாவில் structs பற்றி என்ன?
இந்த செய்தபின் கச்சிதமாக ஆகும்.
நாம் முடியும்
func களைவதற்கு
இதில், ஒரு விவாதம் நடக்கிறது
மாணவர் கள்
அந்த மாணவர் மீது ஏதாவது.
பின்னர் நாம் போன்ற மாணவர் struct அதை கடக்க முடியாது.
முன் இருந்து S1 பற்றிய Func.
struct செயல்படும்
ஒரு முழு செயல்பாடு நிறைவேற்றப்பட்டன போது சரியாக.
Func S1 நகலை பெறும்
அதனால் S1 மாற்ற முடியாது;
மாறாக, எஸ் அது மட்டுமே நகல் சேமிக்கப்பட்டுள்ள
நீங்கள் விரும்பினால் செயல்பாடு S1 மாற்ற முடியும், வேண்டும்
func, ஒரு மாணவர் * எஸ் கொள்ள வேண்டும்
மற்றும் நீ போல், முகவரி மூலம் S1 அனுப்ப வேண்டும்.
மாணவர் * எஸ், func & S1.
இங்கே முகவரி மூலம் அனுப்ப மற்றொரு காரணம் உள்ளது.
எங்கள் struct 100 துறைகளில் உள்ள என்ன?
நாம் func ஒரு மாணவர் கடந்து ஒவ்வொரு முறையும்,
எங்கள் திட்டம், func வாதம் எஸ் என்ற அந்த 100 துறைகளில் அனைத்து நகலெடுக்க வேண்டும்
கூட அது இன்னும் பெரும்பாலான பயன்படுத்துகிறது.
Func மாணவர் மாற்றும் திட்டமிட்டுள்ளோம் செய்யாமல் கூட,
இன்னும் முகவரி மூலம் அனுப்ப மதிப்புமிக்க முடியும் என்றால்.
சரி, நாம் ஒரு struct ஒரு சுட்டிக்காட்டி உருவாக்க விரும்பினால் என்ன?
நாம் போன்ற ஏதாவது செய்ய முடியும்
மாணவர் * எஸ்
malloc சமம்
மாணவர் அளவு.
இன்னும் இங்கே வேலை என்று அளவை கவனிக்க.
நாம் எப்படி இப்போது வயது உறுப்பினர் அணுக
தொகுதி எஸ் புள்ளிகள் என்று?
நீங்கள் முதலில் செய்ய நினைக்கலாம்
* S.age = 4,
ஆனால் இந்த மிக இயங்காது.
இந்த உண்மையில் பொருள் இருந்து
அடைப்புக்குறிக்குள் = 4 * S.age,
இது கூட, தொகுத்தல்
எஸ் ஒரு struct ஒரு struct அல்லது ஒரு சுட்டிக்காட்டி இல்லை என்பதால்,
அதனால் டாட் இங்கே வேலை செய்யாது.
நாம் செய்ய
(* எஸ்). வயது = 4
ஆனால் அடைப்புக்குறிக்குள் எரிச்சலூட்டும் மற்றும் குழப்பமான பெற முடியும்.
அதிர்ஷ்டவசமாக, நாம் ஒரு சிறப்பு செய்திகள் ஆபரேட்டர் இல்லை
என்று ஏதோ போல்
S-> வயது = 4.
வயது குறிப்பிடும் இந்த 2 வழிகள்
சமானம்
நாம் உண்மையில் எப்போதும், அம்பு ஆபரேட்டர் தேவையில்லை
ஆனால் அது விஷயங்கள் இனிமையானதுமாகும் பார்க்க வைக்கிறது.
எஸ் struct கொண்டிருக்கும் நினைவக சில தொகுதி ஒரு சுட்டிக்காட்டி என்பதால்,
சுட்டிக்காட்டி அம்பு தொடர்ந்து நீங்கள் எஸ்> வயது யோசிக்க முடியும்
வயது உறுப்பினர் கைப்பற்றுகின்றனர்.
அதனால் நாம் எப்போதும் structs பயன்படுத்த வேண்டும்?
அது, ஒரு பழமையான முழுஎண்களை விட்டு பெற நிச்சயம் சாத்தியமாகும்
எழுத்துகள், சுட்டிகள் போன்ற
நாம் பயன்படுத்தும் என்று;
அதற்கு பதிலாக S1 மற்றும் S2 முன்,
நாம் age1, age2, NAME1, மற்றும் NAME2 இருந்தது
தனி மாறிகள் அனைத்து.
இந்த மட்டுமே 2 மாணவர்கள் நன்றாக
ஆனால் நாம் அவர்களை 10 இருந்தால்?
என்ன என்றால் பதிலாக மட்டும் 2 துறைகளில்,
மாணவர் struct 100 துறைகளில் இருந்தது?
GPA, படிப்புகள், முடி நிறம், பாலினம், மற்றும் பல.
அதற்கு பதிலாக வெறும் 10 structs, நாங்கள் 1,000 தனி மாறிகள் வேண்டும்.
மேலும், ஒரு செயல்பாடு என்று
அதன் ஒரே வாதம் 100 துறைகளில் என்று struct எடுக்கும்
அனைத்து துறைகளில் அவுட் அச்சிடுகிறது.
நாம் ஒரு struct பயன்படுத்த முடியவில்லை என்றால்,
நாம், அந்த செயல்பாடு என்று ஒவ்வொரு முறை
நாம், அனைத்து 100 மாறிகள் உள்ள கடக்க வேண்டும்
நாம் மாணவர் 1 100 மாறிகள் இருந்தால்,
மற்றும் 100 மாணவர் 2 மாறிகள்,
நாம் தற்செயலாக மாணவர் 1 சில மாறிகள் அனுப்ப வேண்டாம் என்று இருக்க வேண்டும்
மற்றும் மாணவர் 2 இருந்து சில மாறிகள்.
அது, ஒரு struct என்று தவறு செய்ய முடியாது
அனைத்து 100 மாறிகள் ஒரு தொகுப்பு உள்ள இருந்து.
இறுதி குறிப்புகளை ஒரு ஜோடி:
இந்த புள்ளி எல்லாவற்றையும் வரை, பெரிய புரிந்தது என்றால்.
வீடியோ மற்ற தான் முழுமையான 'எனக்காக அல்ல.
Structs சுட்டிக்காட்டி எந்த வகை நடத்த முடியாது என்பதால்,
அவர்கள் செயல்பாடு சுட்டிகள் நடத்த முடியும்.
நீங்கள் பொருள் சார்ந்த நிரலாக்க தெரிந்திருந்தால் என்றால்,
இந்த ஒரு பொருள் சார்ந்த பாணியில் திட்டம் structs பயன்படுத்த ஒரு வழி வழங்குகிறது.
மற்றொரு நேரத்தில் செயல்பாடு சுட்டிகள் மேலும்.
மேலும், சில நேரங்களில் நீங்கள் 2 structs வேண்டும்
அதன் வரையறைகள் ஒன்று சார்ந்துள்ளன.
உதாரணமாக,
நாம், struct ஒரு முடியும்
இது வரையறுக்கப்படுகிறது
ஒரு struct பி ஒரு சுட்டிக்காட்டி,
struct பி * எக்ஸ்,
இப்போது நாம் ஒரு struct பி முடியும்
இது ஒரு சுட்டிக்காட்டி வரையறுக்கப்படுகிறது
ஒரு struct ஒரு, வேண்டும்
struct ஒரு * ஒய்
ஆனால் இந்த, தொகுத்தல்
struct பி struct ஒரு தொகுக்கப்பட்ட என்பதை நேரத்தில் இல்லை என்பதால்.
நாம் struct ஒரு மற்றும் struct இடமாற்றம் என்றால் பி,
நாம் இப்போது அதே பிரச்சினையை விட்டு;
இந்த நேரத்தில், ஒரு தற்போதுள்ள இல்லை struct.
இதை தீர்க்க, நாம் எழுதலாம்
struct பி;
struct ஏ வரையறை முன்
இந்த ஒரு முன் அறிவிப்பு என்று அழைக்கப்படுகிறது.
இந்த தொகுப்பி எனக்கு உதவும்
struct பி முழுமையாக பின்னர் அல்லது வேறு வரையறுக்கப்பட்ட என்று சரியான வகை.
என் பெயர் ராப் Bowden, மற்றும் இந்த CS50 உள்ளது.
[CS50.TV]