[సంగీతాన్ని] డౌ LLOYD: OK. మనం పూర్ణాంకం పనిచేసిన, మేము పాత్రలతో పనిచేసిన, మేము తేలియాడుతున్న పనిచేసిన, డబుల్స్, తీగలు మరియు bools. మేము చాలా అన్ని అందంగా అయిపోయిన చేసిన [వినబడని] రకాల ఆ అన్ని పాటు మాకు అందుబాటులో ఉన్నాయి. కానీ ఇప్పుడు మేము మరింత ఏదో చేయాలనుకుంటున్నారా. మేము ఎలా చెయ్యాలి? ఎలా మేము వివిధ రకాల డేటా సృష్టించాలి? మేము నిర్మాణాలు ఉపయోగించి ద్వారా చేయవచ్చు. కాబట్టి నిర్మాణాలు మాకు ఏకం చేయడానికి అనుమతిస్తుంది వివిధ రకాల వేరియబుల్స్ ఒక సింగిల్, కొత్త వేరియబుల్ రకం, ఇది మేము దాని సొంత రకం పేరు కేటాయించవచ్చు. ఈ ఒక నిజంగా బలమైన విషయం, చేస్తామని ఉండాలి మేము సమూహం ఇప్పుడు ఎందుకంటే వివిధ రకాల డేటా అంశాలతో కలిసి ఒక తార్కిక సంబంధం ఉందని. మేము దీన్ని చేయగలిగారు చేసిన విధమైన శ్రేణితో, కుడి? మేము సమూహాన్ని చేయవచ్చు వేరియబుల్స్ అదే డేటా రకం కలిసి ఒక పెద్ద యూనిట్ లో జ్ఞాపకశక్తి, ఒక శ్రేణి యొక్క. కానీ మేము కలపాలి లేకపోతున్నాను కలిసి వివిధ రకాల డేటా. మేము ఒక పూర్ణాంకం జత చెప్పలేను మరియు ఒక పాత్ర, మరియు ఒక డబుల్ అన్ని అదే విషయం మరియు ఒకే యూనిట్ ఆ కాల్. కానీ నిర్మాణాలు, లేదా తరచుగా, structs గా సూచిస్తారు మేము నిజానికి చెయ్యవచ్చు. సో ఒక నిర్మాణం విధమైన ఉంది ఒక సూపర్ వేరియబుల్ వంటి. కల్గి ఉంటుంది వేరియబుల్ అది లోపలి ఇతర వేరియబుల్స్. ఇక్కడ ఒక ఉదాహరణ ఉంది చాలా సాధారణ నిర్మాణం. ఈ వాక్యనిర్మాణం చూస్తారు ఏమిటి ఒక కారు కోసం ఒక నిర్మాణాన్ని సృష్టించేందుకు ఇష్టం. ఇప్పుడు, యొక్క ఇక్కడ వాక్యనిర్మాణం ద్వారా వీడలేదు. Struct, ఆ సూచిస్తుంది కీవర్డ్ నేను ఇక్కడ ఒక కొత్త రకం డేటా సృష్టించడం నేను ఆ. ముఖ్యంగా, డేటా రకం పేరు మేము చూస్తారు వంటి, struct కారు ఉండదని. కానీ ఈ చిట్కా యొక్క విధమైన ఉంది కంపైలర్ ఆఫ్ ఈ వేరియబుల్స్ యొక్క ఒక సమూహం వలె ఆ అన్నారు అదే రకం భాగంగా పరిగణించేందుకు ఒక నిమిషం లో. కార్లు, నిర్మాణం కేవలం పేరు. మళ్ళీ, ఇక్కడ డేటా రకం అన్నారు struct కారు, కేవలం కారు ఉండాలి. కానీ మీరు విభిన్నమైనది కలిగి ఉంటే మీరు బహుళ structs సృష్టిస్తే అదే కార్యక్రమంలో, మీరు అవసరం struct మరియు struct మధ్య భేదాన్ని మాత్రమే సూచిస్తాయి. కాబట్టి struct కారు, నేను కూడా కలిగి ఉండవచ్చు struct విద్యార్థి, ఉదాహరణకు, అదే కార్యక్రమంలో. గిరజాల జంట కలుపులు లోపల అని పిలవబడే అన్ని రంగాల్లో లేదా నిర్మాణం యొక్క సభ్యులు. కాబట్టి విషయాలు కొన్ని ఏమిటి ఒక కారు స్వతస్సిద్ధంగా ఉంటుంది? సరే, సాధారణంగా ఒక సంవత్సరం ఉంది పిల్లలు ఒక మోడల్ పేరు, మరియు లైసెన్స్ ప్లేట్, సాధారణంగా చేసే ఓడోమీటార్ అది మైళ్ళ కొన్ని సంఖ్య, మరియు ఉండవచ్చు ఒక ఇంజిన్ పరిమాణం. మీరు చూడగలరు గా, నేను అప్ మిక్సింగ్ చేస్తున్నాను పూర్ణాంకాల మరియు అక్షరాలు మరియు డబుల్స్. వారు అన్ని చేయబోతున్నామని ఈ కొత్త డేటా రకం భాగంగా. చివరగా, ఆఖరి విషయం నేను చెయ్యాల్సిన, ఈ చిన్న సెమికోలన్ మర్చిపోతే లేదు చివరలో. మేము నిర్మాణం నిర్వచించు పూర్తిచేసిన తర్వాత, మేము చివరిలో సెమికోలన్ ఉంచాలి. ఇది చాలా సాధారణ వాక్యనిర్మాణ వార్తలు తప్పు, ఒక ఫంక్షన్ తో ఎందుకంటే, ఉదాహరణకు, మీరు కేవలం వుంటుంది బహిరంగ వంకర జంట కలుపు, దగ్గరగా వంకర కలుపు. మీరు ఒక సెమికోలన్ చాలు లేదు ఒక ఫంక్షన్ నిర్వచనం ముగింపు. ఈ ఒక ఫంక్షన్ ఎలా నిర్వచనం, కానీ అది కాదు, అందువలన సెమికోలన్ ఉంది కేవలం ఒక రిమైండర్ అని మీరు ఎందుకంటే, అక్కడ అది ఉంచాలి కంపైలర్ లేకపోతే రెడీ దానితో ఏమి తెలుసు. ఇది చాలా సాధారణ లోపం అనుకోకుండా చేయడానికి మీరు మొదటి నిర్మాణాలు నిర్వచించు చేస్తున్నారు. అలాగే. కాబట్టి మేము సాధారణంగా మా నిర్మాణాలు నిర్వచించే మా కార్యక్రమాలు అగ్రభాగాన వారు బహుశా చూడాలని ఎందుకంటే బహుళ విధులను ఉపయోగించుకోకుండా. మేము ఒక నిర్వచించే వద్దు ఒక ఫంక్షన్ యొక్క లోపల struct, అప్పుడు మేము only-- ఎందుకంటే నిర్మాణం యొక్క పరిధిని నిజంగా మాత్రమే ఆ ఫంక్షన్ యొక్క లోపల ఉంది. మేము బహుశా ఒక నిర్మాణం నిర్వచించడానికి కావలసిన కాబట్టి మేము బహుళ విధులను లో ఉపయోగించవచ్చు, లేదా బహుశా బహుళ లో కలిసి ముడిపడిన ఫైళ్లు మా సింగిల్ కార్యక్రమం సృష్టించడానికి. కొన్నిసార్లు కూడా బదులుగా నిర్మాణం నిర్వచించు మీరు నెలకొల్పాడు అగ్రభాగాన మీ పౌండ్ కలిగి మరియు మీ పౌండ్ నిర్వచిస్తుంది ఉదాహరణకు, మీరు వాటిని పెట్టి ఉండవచ్చు ప్రత్యేక డాట్ h ఫైళ్లు, అప్పుడు మీరు పౌండ్ మీరే ఉన్నాయి. కాబట్టి మేము నిర్మాణాలు కలిగి, కానీ ఇప్పుడు మేము వాటిని లోపల పొందాలి. ఎలా మేము లోపలి వస్తుందా ప్రాప్తి ఒక నిర్మాణం ఆ ఉప వేరియబుల్స్, ఆ వేరియబుల్స్ ఆ నిర్మాణం లోపల ఉనికిలో? Well, మేము అనే ఉంది మాకు అనుమతిస్తుంది డాట్ ఆపరేటర్లు నిర్మాణం రంగాలలో యాక్సెస్. ఉదాహరణకు, యొక్క నేను డిక్లేర్డ్ చేసిన చెప్పటానికి వీలు నా నిర్మాణం డేటా ఎక్కడో టైప్ నా ప్రోగ్రామ్ యొక్క పైభాగంలో, లేదా బహుశా నేను పౌండ్ చేసిన ఒక డాట్ h ఫైలు ఉన్నాయి. నేను అప్పుడు ఒక కొత్త సృష్టించడానికి కావాలా డేటా రకం వేరియబుల్, నేను చెప్పగలను struct కారు, నా కారు, సెమికోలన్. నేను Int చెప్పగల్గినవి జస్ట్ వంటి x, లేదా స్ట్రింగ్ సెమికోలన్ పేరు. ఇక్కడ డేటా రకం, struct కారు వేరియబుల్ పేరు, నా కారు ఆపై నేను డాట్ ఆపరేటర్లు ఉపయోగించవచ్చు నా కారు వివిధ రంగాల్లో యాక్సెస్. నేను నా కారు చెప్పగలను డాట్ సంవత్సరం 2011 సమానం. ఆ సంపూర్ణ మంచిది. మీరు గుర్తు ఉంటే ఇయర్, ఒక నిర్వచించారు ఈ struct కారు లోపలి పూర్ణాంక రంగంలో డేటా రకం. Struct కారు డేటా కాబట్టి ఏ వేరియబుల్ రకం, అటువంటి నా కారు, నేను నా కారు చెప్పగలను డాట్ సంవత్సరం సమానం ఆపై కేటాయించి అది కొన్ని పూర్ణ సంఖ్య విలువ, 2011. నా కారు డాట్ ప్లేట్ CS50 సమానం. నా కార్డ్ డాట్ ఓడోమీటార్ 50505 సెమికోలన్ సమానం. ఆ అన్ని ఉన్నాయి సంపూర్ణ జరిమానా మరియు ఆ మేము యాక్సెస్ ఎలా నిర్మాణం యొక్క ఖాళీలను. స్ట్రక్చర్స్, అయితే, అవసరం లేదు స్టాక్ రూపొందించినవారు ఉంటుంది. జస్ట్ మేము ఏ ఇతర వేరియబుల్ ఇష్టం డైనమిక్ వాటిని కేటాయించాలని. మేము ఒక కార్యక్రమం కలిగి ఉంటే గనక అనేక నిర్మాణాలు ఉత్పత్తి చేయబడుతుంది, మేము ఎన్ని తెలియదు మేము అవసరం చూడాలని అప్పుడు మేము డైనమిక్ అవసరం ఆ నిర్మాణాలు కేటాయించాలని మా కార్యక్రమం వంటి నడుస్తుంటే. మరియు మేము ప్రాప్తి చూడాలని కనుక ఆ సందర్భంలో ఒక నిర్మాణం యొక్క ఖాళీలను, మేము మొదటి dereference అవసరమైన రీకాల్ నిర్మాణం ఒక పాయింటర్ గా ఆపై మేము ఒకసారి dereference పాయింటర్, అప్పుడు మేము ఖాళీలను యాక్సెస్ చేయవచ్చు. మేము ఒక కలిగి ఉంటే నిర్మాణం గణితానికి, మేము కేవలం పాయింటర్ డాట్ రంగంలో చెప్పలేను పేరు మరియు మేము చూస్తున్న ఏమి పొందండి. Dereferencing యొక్క అదనపు దశల ఉంది. కాబట్టి యొక్క అని పిలవబడు బదులుగా previous-- యొక్క కేవలం మునుపటి ఉదాహరణకు వంటి, బదులుగా దీన్ని ప్రకటించే స్టాక్, struct కారు, నా కారు, సెమికోలన్, నేను, struct కారు చెప్పే స్టార్, ఒక ఒక పాయింటర్ struct కారు, నా కారు అని struct కారు malloc పరిమాణం సమానం. ఎన్ని మేము యొక్క పరిమాణం కనిపెడతాడు మీ కొత్త డేటా రకం తీసుకుంటుంది బైట్లు. మీరు తప్పనిసరిగా మాత్రమే ఉపయోగించడానికి అవసరం లేదు వెడల్పు Int, లేదా చార్, లేదా ఏ యొక్క పరిమాణం అంతర్నిర్మిత డేటా రకాల. కంపైలర్ తగినంత స్మార్ట్ ఉంది ఎన్ని బైట్లు దొరుకుతుందని మీ కొత్త నిర్మాణం అవసరం. ఐతే నేను మెమరీ యూనిట్ malloc ఒక struct కారు కలిగి తగినంత పెద్ద, మరియు నేను తిరిగి పాయింటర్ పొందుటకు మెమరీ ఆ బ్లాక్, మరియు ఆ పాయింటర్ నా కారు కేటాయించిన. ఇప్పుడు, నేను యాక్సెస్ అనుకుంటే నా కారు రంగాలలో, నేను మొదటి నా కారు dereference ఉపయోగించి dereference ఆపరేటర్లు, నక్షత్రం మేము గమనికలు నుండి చూసిన వీడియోలు, మరియు అప్పుడు నేను dereference తర్వాత, అప్పుడు నేను డాట్ ఆపరేటర్లు ఉపయోగించవచ్చు నా కారు వివిధ రంగాల్లో యాక్సెస్. సంవత్సరం 2011 సమానం డాట్ నా కారు స్టార్. ఆ ప్రభావం వుంటుంది మేము ఈ సందర్భంలో కావాలి, మేము డైనమిక్ చేసిన ఎందుకంటే నా కారు కేటాయించింది. కుడివైపు, అయితే, రకమైన బాధించే ఉంది? ఇప్పుడు ఒక 2-దశల ప్రక్రియ ఉంది. ఇప్పుడు మేము dereference-- కలిగి మేము ఒక స్టార్ ఆపరేటర్లు కలిగి, మరియు మేము ఒక డాట్ ఆపరేటర్లు కలిగి. మరియు మీరు ఆశించవచ్చు వంటి, ఎందుకంటే సి ప్రోగ్రామర్లు తక్కువ మార్గాల్లో ప్రేమ పనులను, ఒక ఉంది తక్కువ మార్గం దీన్ని. బాణం అని మరొక ఆపరేటర్లు ఉంది, ఈ ప్రక్రియ చాలా సులభం. బాణం పనిచేస్తుంది మార్గం అది మొదటి dereferences ఎడమ పాయింటర్ ఆపరేటర్లు వైపు, ఆపై, తర్వాత dereferenced మమేకమయ్యారు ఎడమ పాయింటర్, అది కుడి రంగంలో యాక్సెస్. కాబట్టి గతంలో మేము ఈ విధమైన వచ్చింది నా కారు, ఈ విషయాన్ని డాట్ స్టార్ అక్కడ జరగబోతోంది చాలా ఉంది. కానీ మనం దానికి బదులుగా చేయవచ్చు దీన్ని ఉంది నా కారు బాణం సంవత్సరం 2011 సమానం. మళ్ళీ, ఇక్కడ ఏమి జరుగుతున్నది? మొదటి, నేను నా కారు dereferencing చేస్తున్నాను. ఇది మళ్ళీ, ఇక్కడ ఒక పాయింటర్ ఉంది. అప్పుడు, తరువాత సంభవించిన నేను నా కారు dereferenced అప్పుడు ఖాళీలను యాక్సెస్ చేయవచ్చు సంవత్సరం, పళ్ళాలు మరియు ఓడోమీటార్ కేవలం నేను అనుకొనుట గా మొదటి కలిగి ముందు నా కారు, dereference ఉపయోగించే స్టార్, మరియు రంగంలో యాక్సెస్ కలదు. సో మీరు, నిర్మాణాలు కలిగి నిర్మాణాలు గమనికలు కలిగి ఉంటాయి, మరియు మీరు ఆక్సెస్ మార్గాలను కలిగి ఆ నిర్మాణాలు ఖాళీలను, మీరు గమనికలు ఉందా అని వాటిని లేదా చరరాశులు తాము. డాట్ లేదా బాణం, బట్టి వేరియబుల్ ఎలా ప్రకటించబడింది. నేను డౌ లాయిడ్ ఉన్నాను, ఈ CS50 ఉంది.